Git常用命令

205 阅读3分钟

常用命令

git status  查看文件状态
git clone <git地址> 克隆仓库
git add .  提交内容
git commit -m '理由' 放入暂存区
git pull origin 分支名 更新当前分支
git push origin 分支名:分支名 推送当前分支到远程仓库的某个分支
git branch 查看当前所有分支
git branch -a 查看本地和远程分支
git remote show origin 查看本地分支对应远程分支的状态
git remote prune origin 删除没有对应的远程分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建新分支并切换到这个分支
git merge new1   当前分支合并new1分支
git branch -d new1   在master分支下,删除new1分支(因为new1已经合并到master,故可以删除)
git branch -D new2   强制删除没有合并的分支
git checkout -- <file.name>   撤销当前操作
git log    查看提交日志
git reset --hard commit_id   恢复到指定branch版本(可能有多个文件)
git reset --hard HEAD^  回到上一个版本
git reset --hard HEAD~<num>  回到上num个版本
git push -f origin master   强制push
git branch | grep -v "master" | xargs git branch -D.  
git branch |xargs git branch -d 删除本地所有与远程仓库同步分支(本地修改过未提交的分支不删除)
git branch --set-upstream-to=origin/<branch>   本地关联远程分支

对比

git diff    本地与缓存区之间差异
git diff --cached(--staged)  缓存与版本库之间的差异
git diff master 本地与版本库之间的差异

撤销

git reset HEAD <file.name>   撤销提交到缓存区的内容
git checkout -- <file.name>   撤销当前操作
git commit -m '注释内容' --amend    重新合并新的提交方案

分支

git branch  查看分支
git branch --merged  查看已经合并的分支
git branch --no-merged  查看没有合并的分支(new2)
git branch new1  创建了一个new1分支
git checkout new1  切换到new1分支
git checkout -b new2  创建并切换到new2分支
git merge new1   当前分支合并new1分支
git branch -d new1   在master分支下,删除new1分支(因为new1已经合并到master,故可以删除)
git branch -D new2   强制删除没有合并的分支
git push origin <branch>   除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的

删除

git rm <file.name>   工作区文件已删除时,可以删除缓存区的文件
git rm -f <file.name>  同时删除缓存区和工作区文件
git rm --cached <file.name>  只删除缓存区文件

同步到远程仓库

git remote  查看远程名字
	>> -v   远程名字对应的地址
	>> origin   默认名字
git push origin master. 可以把 master 换成你想要推送的任何分支

多人协作解决冲突与更新

git fetch  手动同步,查看区别
	>> git diff master origin/master  打印远端和本地区别
	>> git merge orgin/master 手动合并冲突
git pull  直接合并远端到本地

开源项目协作

fork  查看项目到本地分支
pull request  发送请求给原作者

丢弃本地修改

1 还未添加到缓存区,即未执行git add,用git checkout命令来撤销修改

git checkout -- rainbow.txt start.txt
git checkout -- *
git checkout -- *.txt

2 已经添加到缓存区,即已经执行了 git add, 用git reset命令来撤销修改

git reset HEAD rainbow.txt start.txt
git reset HEAD  *
git reset HEAD *.txt

要注意的是,执行以上命令后,本地的修改并不会消失,而只是从暂存区回到了工作区,即第一种情况下所示的状态。继续用第一种情况下的操作,就可以放弃本地的修改。

3 已经将代码提交到本地仓库,即已经执行git commit命令,此时工作区已经clean,若想撤销之前的修改,需要执行版本回退操作:

#回滚到当前版本,即删除缓存区内容(HEAD相当于当前的commitID)
git reset --hard HEAD  
#回退到上一个版本
git reset --hard HEAD^
#回退到上上次版本
git reset --hard HEAD^^
git reset --hard HEAD^^^
git reset --hard HEAD~<num>  回到上num个版本
#回退到指定commitid的版本
git reset --hard  commit_id

附上图片总结