我将大部分常用的命令及其简介和自己的理解都聚集在这里了,这样就方便查阅啦!
顺序是从远程仓库到本地操作,从操作到检查信息。
添加远程仓库
git remote add origin git@xxx.xxx.xxx.xxx:gitproject.git
这里的origin
将指代这个远程仓库的地址,我们可以给它起其他的名字,方便记忆就行。
重命名远程仓库
git remote rename old_name new_name
前文提到origin
是用于指代这个远程仓库地址的代称,我们如果需要修改代称,就可以使用这行命令。先输入旧名称,再输入新名称,就可以了。这样会自动修改所有远程跟踪的分支名称,之前引用old_name/master
的,现在会引用new_name/master
。
移除远程仓库
git remote remove origin
这行命令可以移除一个名为origin
远程仓库,并且删除所有与这个远程仓库相关的远程追踪分支以及配置信息。
查看远程仓库
git remote show origin
这行命令可以让我们查看一些远程仓库的信息,例如fetch和push的链接;HEAD分支叫什么等等信息。这里的origin
是我们之前添加远程仓库的时候定义的名称,这个可以根据个人爱好,不一定非得是origin
;master
是我们git init
创建的分支,我们可以在git init
的时候定义成其他名称,但是很多人都懒得改,所以就是默认创建的master
。使用git remote show
可以查看更多更详细的信息。
修改或者添加文件之后,跟踪这些文件
git add .
这个命令将会跟踪当前目录下所有修改过的文件或者新添加的文件。
提交更新
git commit . -m 'this is comment'
这行命令将会提交当前git仓库的更新,并且备注“this is comment”。这里不建议使用中文备注,因为有的设备上不支持中文,会显示错误。
查看当前仓库中的文件的状态
git status
我们可以使用这行命令查看当前当前仓库中的文件处于什么样的状态,并且还会显示一些建议。
查看更详细当前仓库中的文件的状态
$ git diff
这个命令不止可以看到仓库中文件处于什么状态,也能看到文件的哪些内容发生了修改。
新建分支
git branch newbranch
这行命令会新建一个名为newbranch
分支,但是不会马上自动切换到这个分支。分支本质上是提交对象的可变指针。默认的是master,这是git init
的时候默认创建的。
切换分支
git checkout newbranch
这行命令会将HEAD指向的分支切换到之前新建的newbranch
分支。
删除分支
git branch -d newbranch
这行命令可以删除我们已经不需要的分支。
合并分支
git merge secondbranch
这行命令会将secondbranch
分支合并到当前分支。如果secondbranch
分支所在的快照的上一个快照不是当前快照,那么将会由二者最近的分叉口快照(这个被称为Common Ancestor,共同祖先)和这二者,做一个简单的三方合并,并且提交。
推送更新到远程仓库
git push origin master
这行命令会将我们提交了的更新推送到远程仓库origin
的master
分支。这里的origin
是我们之前添加远程仓库的时候定义的名称,这个可以根据个人爱好,不一定非得是origin
;master
是我们git init
创建的分支,我们可以在git init
的时候定义成其他名称,但是很多人都懒得改,所以就是默认创建的master
。
查看提交记录以及简单地查看分叉历史
git log
这行命令可以查看我们commit
的每条记录,每次commit
对应的哈希值、作者、时间、备注。需要注意的是,macOS的终端中,不会一次全部显示出来,需要不断按回车直到显示END
。
详细的查看提交记录以及分叉历史
git log --oneline --decorate --graph --all
这行代码将会详细清晰地显示提交历史、各个分支的指向以及项目的分叉。
Git作为版本控制系统最重要的就是还原命令了,因为它就是为了防止出现问题或者进行了错误的操作的情况下,要还原到指定版本。接下来就细说一下各种情况的办法
还原被修改或删除的未追踪文件
git restore file
这行命令可以用于撤销未被追踪的某一操作。例如我们错误删除了一个文件,但是还没使用git add
命令,这时候使用git status
来查看可以看到显示deleted: 4.txt
,我们想要还原就使用git restore 4.txt
,然后就发现被删除了的4.txt
文件又回来了。
还原被修改或删除的追踪文件
# 还原file文件的状态
$ git restore --staged file
# 还原file文件
$ git restore file
如果我们修改或者删除完,使用了git add
命令,那么我们需要先还原刚才追踪的信息,然后再进行还原文件。
需要注意的是,从这里开始的还原命令会改变HEAD指针(也就是当前所在的本地分支),也就是指定版本之后的版本将会消失。
还原某一版本的一些文件
# 还原到指定版本的文件,这里会显示与指定的版本相比,哪些文件被修改或者删除了,最左边是M表示被修改了的(Modified),D表示被删除的(Deleted)
$ git reset xxxxxxx
Unstaged changes after reset:
M file
# 还原被修改的file,这里可以还原一部分文件,不用全部恢复
$ git restore file
这些命令可以还原到指定版本的文件。git reset xxxxxxx
下面显示的是:与指定的版本相比,哪些文件被修改或者删除了,最左边是M表示被修改了的(Modified),D表示被删除的(Deleted)。xxxxxxx
是该版本对应的哈希值,使用git log
命令查看。这里还原可以指定某个文件还原,而不用全部都还原,如果需要全部还原的话,可以使用下面这个命令,但是有需要注意的地方,可以看下面这个命令的“需要注意”部分。
强制还原某次提交的版本的所有文件
git reset --hard xxxxxxx
这行命令会强制还原所有被修改或者删除的文件。相当于将上面“还原某一版本的一些文件”中的命令将file
换成*
。xxxxxxx
是该版本对应的哈希值,使用git log
命令查看。需要注意的是:如果我们已经添加了新的文件,并且没有使用git add
命令追踪,那么哪怕使用了–hard选项,都不会影响它,它还是会在那里,和使用这个命令之前一样。如果想要连着它一起还原了(也就是删除了),需要先使用git add .
,然后再使用这个命令,就会发现后来新增的文件也没了,也就是说,完全还原成指定版本的样子了。
还原成某次提交的版本
$ git add .
$ git reset --hard xxxxxxx
这些命令可以完全还原成指定的版本,原因参见上一条。xxxxxxx
是该版本对应的哈希值,使用git log
命令查看。