最近刚刚入职,感觉自己还有好多不知道的东西,比如一些git的命令啊,Linux、Vim的命令啊。。。在这里整理一些git常用命令。大多是参考以下链接

克隆远程仓库

git clone
url为远程仓库地址,可以使用ssh,也可以用https链接。

配置与别名alias

配置你的账号和邮箱,这些出现在每次的commit信息之中。当然这个信息可以通过.git文件夹内的config文件修改。

git config –global user.name
git config –global user.email
使用–global选项,配置的信息是放在用户主目录上的。如果想在自己的项目里面使用单独的配置账号邮箱,可以不加这个选项,这个时候的配置信息是放在.git/config里面的。

git config –list
使用–list参数可以看到所有的配置信息,可能会看到重复的变量名,那就说明它们来自不同的配置文件,不过最终 Git 实际采用的是最后一个。

同时配置的时候可以为一些常用的命令命别名,这样可以提高工作效率,例如

git config –global alias.co checkout
git config –global alias.br branch
git config –global alias.ci commit
git config –global alias.st status
这样我们想切换分支的时候只需要使用 git co即可。

对比diff

对未暂存的文件使用git diff命令能查看工作区这次修改的文件和上次提交的文件之间的区别,使用git status命令是查看具体有哪些文件有改动,在使用git status之后推荐使用git diff来查看具体的改动是什么。

注意这里 git diff是查看未暂存的文件和上次提交的区别,如果是查看已经暂存的文件和上次提交的文件的区别使用 git diff –cached。

移除文件

移除文件主要使用的有两个命令rm,git rm。移除文件主要是从暂存区移除文件,然后提交,这时候可以使用git rm命令,然后再提交,也可以使用rm命令,然后再git add,git commit。

这两个命令最主要的区别就是使用rm仅仅是删除工作区域的文件,需要再使用git add命令,而git rm相当于删除暂存区的文件,可以一步做完。

如果在删除之前修改过并且放在暂存区之后就需要使用强制删除 -f 选项。还有一种情况是有时候我们只希望删除暂存区的一些不起作用的文件但是希望在工作区保留这些文件,可以使用git rm –cached命令。

修改前一次提交信息

如果在提交的时候发现自己的commit的信息写错了,你想修改这一次提交的信息,就可以使用git commit – amend命令。

这个命令主要是用来修改最后一次提交,使用之后会出现 git 默认的文本编辑器,编辑它确认没问题后保存退出,就会使用新的提交说明覆盖刚才失误的提交。

如果在上一次的提交中发现还有一部分信息需要一起提交,也可以先git add上忘记的文件,然后使用git commit – amend命令,成为一次提交。

reset

如果自己在使用git add添加文件到暂存区的时候,一不小心将两个文件添加了,或者不小心使用了– all参数,可是自己只想添加一个文件,这个时候如果想撤销之前的操作,就可以使用git reset HEAD 命令,这样这个文件就会变成未暂存的状态。

这个命令还有一个很强大的地方,就是可以回退版本,同时对于一个文件自己可以修改无数次,每次修改提交之后就会有一个commit 的 id,这个 id 是一个SHA1计算出来的一个非常大的数字,每个 id 都会是唯一的。

可以使用git log查看每个 commit 的 id,也可以使用git reflog,这个命令记录了每一次提交,如果自己想退回到某个版本去,可以使用git reset –hard HEAD^,在 git 中用 HEAD 表示当前版本, HEAD^表示上一个版本,如果想退回到前几十个版本之前,可以直接使用git reset –hard commitID就可以直接将HEAD指针指向那个版本。

撤销修改

如果自己将工作区的某个文件改动完之后还未添加到暂存区发现之前的改动是完全没有必要的,这个时候也有一个命令可以撤销之前的修改,就是git checkout – file。

这个命令只有自己真的觉得自己的修改是完全没有必要的情况下再使用,因为这个命令会将之前版本的复制过来重写整个文件,如果觉得自己当前的修改是想保留下来可以提交之后选择回退版本。

如果自己的文件在改动之后已经添加到暂存区了,这个时候可以使用git reset HEAD 命令,使文件变成未暂存的状态,然后使用 checkout 即可。

如果已经提交了,可以选择版本回退到自己想要的版本。

远程仓库

在本地建了一个仓库之后如果需要关联到某个远程仓库进行文件的上传下拉等操作,需要先使用git remote add 将远程的仓库关联到本地仓库,这里的 name 是自己为这个仓库取得名字,url是远程仓库的地址。

可以使用git remote -v来查看自己的仓库关联了哪些远程仓库,关联到远程仓库之后可以使用git fetch 将远程分支上面的数据抓取到本地。

之后可以使用git branch -a查看自己的分支并可以使用git checkout 切换到自己新抓取的那个分支上面看看都下拉了什么,也可以使用git merge合并分支。

fetch

git fetch 用于将远程主机版本库的更新取回本地。
git fetch <远程主机名>命令将某个远程主机的更新,全部取回本地。。

注意,fetch只会拉取数据到本地,但不会自动合并到当前工作分支。
默认情况下,git fetch取回所有分支(branch)的更新。如果只想取回特定分支的更新,可以指定分支名。
git fetch <远程主机名> <分支名>
当然这个命令可以再加一个本地分支:
git fetch <远程主机名> <分支名>:<本地分支名>
比如: git fetch origin remotebranch: newBrach
此命令可以拉取远程的 remotebranch取回到本地的newBrach分支(如果没有会自动建立)。
取回远程主机的更新以后,可以在它的基础上,使用git checkout命令创建/切换到一个新的分支。
git checkout -b newBrach origin/remotebranch

pull && push

git pull,这个命令自动抓取数据下来,会将远端分支自动合并到本地仓库中当前分支。相当于fetch + merge。

说完拉取数据之后,还有一个命令git push [remote-name] [branch-name]可以将本地的数据推到远程仓库上面,如果在推数据前,已经有其他人推送了若干更新,那这个 push 就会被拒绝。必须先把他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。

对远程仓库如果想更名可以使用git remote rename 命令,如果想删除,可以使用git remote rm

只是一些简单的整理,最后贴一张图:
git命令