Git是一个很好用的版本控制系统,本文对于经常使用的一些命令进行了汇总。git
https://github.com/右上角点击"+"号,New repository,建立一个仓库,以后输入仓库的名字,描述和选择pubic/private。github
![]() |
为了能从远程仓库拉取文件到本地或将本地文件push到远程仓库,须要配置ssh key,不然会出现全选不容许的错误(permission denied)。点击右上角头像-->settings-->SSH and GPG keys,点击New SSH key。ssh
而后cd ~/.ssh,进入本机ssh目录,找到xxx.pub的文件,将文件内容复制到Key文本框中,点击Add SSH key。fetch
当仓库建立后,会建立一个默认的分支master,代码,文件保存在远程存储仓库中,若是咱们要把远程代码拿到本地来。进入咱们新建立的参考中,在右侧能够看到一个绿色的按钮“Clone or download”,点击以后能够看到一个git url,或者能够用ZIP的格式把文件下载下来,若是用git url的话须要用到命令:url
git clone https://github.com/XXX/$repository_name.git
这样在当前路径下就出现了$repository_name的文件夹,里面就是远程仓库中的文件。spa
从远程考本到本地后,咱们是在master分支上,想要查看当前代码在哪一个分支上可使用命令,会列出本地的分支都有哪些,以及当前是在哪一个分支上。3d
git branch
要查看本地仓库的状态可使用命令,能够看到哪些文件进行了修改等信息。版本控制
git status
若是要再当前分支上再建立出一个新的分支,使用命令,这样就会建立出一个名字为branch_name的新分支,而且会自动换到这个分支上。指针
git branch branch_name // 建立branch_name分支 git checkout -b branch_name // 建立branch_name分支并从当前分支切换到新的分支
若是已经建立了branch_name分支,那么我能够在master分支和新建立的分支上进行切换,使用命令,这样又回到了master分支上。blog
git checkout master
但新建立出来的分支只是在本地仓库中,若是要同步到远程仓库中,须要使用命令,这样在远程仓库中就会增长一个名字为branch_name的分支。
git push origin branch_name
当对文件进行修改后,若是想查看具体某一个文件哪里进行了修改与以前有什么不一样,可使用命令。
git diff file_name
须要提交这些修改时,首先要使用命令,将带提交的文件加入临界存储区。
git add file1 file2
而后提交并加上提交说明,使用命令。
git commit -m "commit message"
而后同步到远程分支上。
git push
在每次提交修改的时候都会带一些commit message,若是想看当前分支的提交历史,可使用命令:
git log
还能够看一下某个文件某行内容被谁修改过,可使用命令:
git blame file_name
经过git log咱们能够看到,每次提交都对应了一个编号(commit_id),若是我但愿将多个commit合并为一个commit时,须要使用命令,可是这个合并是有限制的,必须是从最近的一次提交开始的连续几个提交。
git rebase -i commit_id
以后会进入一个配置文件,里面列出了每次commit的id和list,前面还有一个字符,表示要进行rebase的动做,将最上面那条记录的首字符修改成“r”,剩下修改成“f”。f表示后面的这条commit合并前面的这条commit,r表示使用这个commit,而且能够从新编辑commit message。修改后继续,就能够重新编辑commit message。
这时能够看到多条commit记录被合并到一条了,而后将新的修改push上去,须要使用命令,这里须要使用force-push才能将rebase后的修改推到远程仓库。
git push -f branch_name
当有多人同时对项目进行开发时,可能有其余人已经向branch提交了新的commit,这是咱们本地的文件就不是最新的或者说与远程仓库不一样步,若是想获取远程分支都有哪些修改,可使用命令。
git fetch // 只获取远程branch修改的信息,并不把本地分支与远程分支同步
假设如今在master分支上,若是要把本地文件与远程文件同步,须要使用命令。
git fetch // 获取远程branch修改的信息 git reset --hard origin/master // 将本地branch的指针指向远程master的位置
在开发过程当中可能会遇到这样的状况,在开发一个模块的过程当中,来了一个更紧急的任务,而以前的开发过程进行了一半,咱们须要保留劳动成果,等待一会继续开发,这时候就须要使用命令。
git stash // 将没有提交的修改保存
git stash list // 查看stash中都有哪些记录
从git stash list中咱们能够看到,每个stash中的存储都是有编号的,stash{0},stash{1}等。若是这时候紧急的任务已经完成了,咱们须要继续以前的开发,可使用命令,将以前存储在stash中的修改恢复回来。
git stash pop stash{0} // 将编号为{0}的这个修改恢复回来
若是要清空stash,可使用命令。
git stash drop