请稍侯

Git 常用命令简介

23 October 2017

下文总结一下git命令

基本命令

1、git init 将当前目录修改为Git可以管理的仓库

2、git add readme.md 将readme.md文件添加到仓库

3、git commit -m "wrote a readme file" 告诉Git,把文件提交到仓库,-m后面输入的是本次提交的说明.

4、git log,查看当前仓库的历史记录,也根据查看具体文件,加上文件路径。此外,git log还可以加上--pretty=oneline参数,两者命令对比结果如图:

git

git

版本回退

上面已经提到可以使用git log 查看历史记录,图片中黄色的一串代码就表示了commit的版本号

1、git reset --hard HEAD^,将当期版本回退到上一个版本。 HEAD表示当期版本,HEAD^表示上一个版本,HEAD^^表示上上个版本,依次类推。还可以写成HEAD~20表示前20个版本

git

2、git reset --hard 版本号,改命令后面可以直接跟上commit的版本号,如上已经将版本回退到上一个版本,现在又后悔了想要回到没有回退前。如图,版本号可以不写全,git会自动去查找

git

3、git reflog 查看使用命令的历史记录

git

4、git checkout -- readme.txt放弃对工作区的修改,没有git add之前

5、git reset HEAD readme.txt,可以把暂存区的修改撤销掉

6、git rm 文件 用于删除一个文件。

分支管理

1、git branch 分支名创建新的分支,可以使用git branch查看当前分支

2、git checkout 分支名修改当前分支,还可以在创建的分支的时候同时修改,使用命令git checkout -b 分支名

3、git merge 分支名将分支合并

4、git log --graph --pretty=oneline --abbrev-commit查看分支的合并情况

5、git branch -d 分支名删除分支

6、git merge --no-ff -m "merge with no-ff" 分支名合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

7、分支策略,master分支仅用来发布新版本,平时不在上面干活,平常操作的是其他分支,比如:dev,这个分支是不稳定的,需要发布时再把dev分支合并到master上,然后在master分支发布1.0版本。工作都在dev分支上,然后每个人有自己的分支,工作做完都向dev分支上合并就可以了。团队合作的分支如图:

git

8、修改有问题的分支,先对将当前工作现场“储藏”,使用git stash命令,然后切换到需要修改的分支,创建临时分支,并在临时分支上修复问题后再合并到问题分支上,接着删除临时分支。最后,切换到之前的工作分支,恢复工作现场使用git stash pop恢复的同时删除stash内容,如果单纯恢复使用git stash apply,删除使用git stash drop,另外使用git stash list查看保存的内容

9、git branch -D 分支名使用该命令强行删除还没有被合并的分支。

协作

1、git remote查看远程库的信息,git remote -v显示更详细的信息

2、git push origin master将本地主分支推送到远程库,如果要推送其他分支,比如:dev,改成:git push origin dev即可。

3、分支推送一般原则是:

  • master分支是主分支,因此要时刻与远程同步
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要远程同步
  • 其他分支取决于你是否和你的团队成员合作在上面开发

标签管理

1、git tag 标签名新建标签

2、git tag查看所有标签

3、默认标签是打在最新提交的commit上,如果需要指定commit上打标签,可以使用git log --pretty=oneline --abbrev-commit查看历史提交的commit id ,然后在执行git tag 标签名 commitid

4、git show 标签名用于查看标签信息

5、git tag -a 标签名 -m "说明信息" commitid可以使用-m参数为标签指定说明文字

6、git tag -s 标签名 -m "说明信息" commitid通过-s用私钥签名一个标签

7、git tag -d 标签名删除标签

8、git push origin 标签名将标签推送到远程,或者可以使用git push origin --tags一次性推送全部尚未推送到远程的本地标签

9、删除已经推送到远程仓库的标签,先要将本地标签删除,然后再使用git push origin :refs/tags/标签名删除远程仓库的标签

10、允许无关的历史

###git pull origin master --allow-unrelated-histories

11、允许无关的历史

###git remote add origin git@XXXXX

12、.gitignore规则不生效的解决办法,先把本地缓存删除(改变成未被追踪状态),然后再提交

###git rm -r --cached .