之前我写过一篇Git Submodule的笔记。这期间我隔了很久没有使用git,现在捡起来,发现都生疏了,所以还是在这里对常用的几个命令做个整理。
最基本的几个个命令:
git clone username@host:/path/to/repository
检出远端服务器上的仓库
git add
将文件提交到暂存区
git commit
修改你本地的HEAD
git push (远程仓库名) (分支名)
将本地的改动提交到远程仓库
比如说你要提交到远端的master分支:git push origin master
。其实这个命令的意思是把本地的master分支提交到远程的master分支,也就是git push origin refs/heads/master:refs/heads/master
,一般都会省略refs/heads
,变成git push origin master:master
,如果你想提交到不同名的远程分支dev
,那么可以这样:git push origin master:dev
还有一些与协作有关的命令
git pull
让你的本地分支更新到最新版本。这个命令其实是git fetch
和git merge
的合并。
这个命令的用处主要是:当多人协作的时候,比如说都在dev
分支开发,别人提交了一部分代码到远程dev分支,这个时候你本地的dev已经不是最新的了,所以要使用git pull
拉取别人提交的代码。
如果别人的代码与你本地的有冲突,那么就要手动解决冲突。
git branch
查看分支。
git branch -a
查看本地和远程所有分支。*
所在的那个分支就是你当前的分支。
git checkout <branchname>
切换分支。
比如说你想要切换到dev
分支,那么可以使用命令git checkout dev
git checkout -b <newbranchname>
在本地新建分支,并切换到该分支。
比如说你想要在本地新建一个test
分支,那么可以使用命令git checkout -b test
git branch -d <needdeletebranchname>
删除本地分支。
比如说你想要删除本地的test
分支,那么可以使用命令git branch -d test
git push orgin <localbranchname>:<remotebranchname>
将本地新建的分支,提交到远端。
这个命令和本文最开始提到的是一样的。当远端没有指定的分支的时候,就会创建一个分支。这样就达到了将本地新建的分支提交到远端的目的。
git status
查看你本地库有什么改动。
Untracked files
表示这些文件都没有添加到版本库里面,还没被追踪记录。Changes not staged for commit
表示有改动需要被记录且提交到暂存区的文件。Changes to be committed
表示这些文件需要提交
git log
查看提交历史。(按q
可以退出查看)
看上方的图,最近一次提交是2017-12-22 18:04:06
的时候,commit-id
是179d67d74……
,还可以看到具体的文字描述。
git reset
撤回提交,且不留痕迹。
看上面这个图,比如说你在本地基于B
进行了改动,并且commit了,那么结果如下图所示,你的HEAD已经从B
指向了最新的节点C
。
这个时候,如果你想撤回刚才那次commit,那么就可以使用git reset <commit-id>
来撤销刚刚的提交。按照上图所示,你想撤销C这次commit,而C的前一次B的commit是8888
,那么就可以使用git reset 8888
,这样一来,HEAD指向了B,你本地的文件还是处于Changes not staged for commit
状态,达到了目的。
上面只是演示了撤销一次,如果想要撤销多个commit呢?那么只需要在git reset <commit-id>
里面写上你让HEAD指向的那个节点的commit-id。(比如说想要撤销到A,那么命令是git reset 1111
)被撤销的这些commit里面的文件改动,都在你本地没丢失,你都可以在git status
的Changes not staged for commit
里面看到。
git diff
查看本地文件与HEAD所指的文件的区别。
如果要看单独某个文件的diff,可以使用gif diff <filepath>
在里面明确指明某个文件的路径。
暂时就写到这里,以后再继续更新~