初始化一个git仓库,使用git init 命令
将文件添加到git仓库,分两步
git add <file>,注意,可反复多次使用,添加多个文件
git commit -m <message>
要随时掌握工作区的状态,使用git status 命令
如果 git status 告诉你有文件被修改过,用 git diff <file>可以查看修改内容
git log 命令显示从最近到最远的提交日志;如果嫌输出信息太多,可以加上
--pretty=oneline参数
- HEAD 指向 的版本就是当前版本, 因此,Git 允许我们在版本的历史之间穿梭,使用命令git reset --hard [commit_id]
- 穿梭前 用git log可以查看提交历史,以便确定要回退到那个版本。
-
要重新返回未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本
image.png
image.png
每次修改,如果不用git add到暂存区,就不会加入到commit中
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
- 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步 git reset HEAD<file>,就回到了场景1,第二步按场景1操纵。
- 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库
- 命令git rm 用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容
查看当前关联远程库
git remote -v
删除当前配置的远程库
git remote rm origin
要关联一个远程库,使用命令
git remote add orgin git@server-name:path/repo-name.git
eg : git remote add orgin git@github.com:github账号/新建的仓库名
关联后,使用命令git push -u origin master 第一次推送master分支的所有内容;
此后,每次本地提交后,只要必要,就可以使用命令git push origin master推送最新修改了
推送到远程仓库
- git remote add origin git@github.com:PonyCrossingTheRiver/learngit.git
- git push -u origin master
第一次时加上参数 -u 以后就不需要这个参数了
克隆远程仓库
git clone git@github.com:PonyCrossingTheRiver/gitskills.git
git鼓励大量使用分支
- 查看分支 :
git branch - 创建分支:
git branch <name> - 切换分支:
git checkout <name> 或者 git switch <name> - 创建+切换分支:
git checkout -b <name> 或者 git switch -c <name>(switch命令在git 新版本才会有) - 合并某分支到当前分支 :
git merge <name> - 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
git merge --no-ff -m "merge with no-ff" dev - 删除分支 git branch -d <name>
查看分支合并图
$ git log --graph --pretty=oneline --abbrev-commit
开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过
git branch -D <name>强行删除。
标签
- 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
- 命令git tag -a <tagname> -m "blablabla..." commitId可以指定标签信息;
- 命令git tag可以查看所有标签。
命令git push origin <tagname>可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d <tagname>可以删除一个本地标签;
命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
.gitignore 文件
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
配置别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
网友评论