git常用命令大全

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> hot3.png

git config --global core.email "xufeng.zhang@10.4.29.111"   指定全局邮箱(当前用户)

git config --global core.editor vim    指定全局的编辑器为vim

 

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 config --list

 

git diff README.md    列出当前文件的未跟踪版本与最近一次添加到版本库的版本的区别

git diff --staged README.md    列出已暂存版本与最近一次添加到版本库的版本的区别

git commit    会进入vim模式,用户可在里面输入此次提交的内容信息,并且注释部分列出了上次git status的信息,保存退出后注释部分不会被提交

git commit -m "信息"    输入此次提交的信息

git commit -a -m "信息"    不使用git add,直接一次性将上次跟踪的文件提交到版本库

 

git rm test.txt    将test.txt文件移除,该文件不能为被修改未暂存或已暂存的文件

git rm --cached test.txt    将test.txt从暂存中移除,并且将其从版本库中移除使其成为一个未跟踪的文件,但是本地文件未被删除

git rm -f test.txt    将test.txt强制从版本库和暂存中移除,并且将删除这个动作暂存起来(即git add之后),只有在commit之后才完全删除

                      对于处于删除的处于暂存状态的文件,首先使用git reset HEAD test.txt,然后使用git checkout -- test.txt则可以恢复最近一次跟踪的状态

 

git mv test.txt readme.txt    修改test.txt文件的名称为readme.txt

 

git log -p    显示每次修改提交文件的差异

git log -1    显示最新一次修改提交的文件的差异

git log --pretty=oneline    简化日志,只显示一行

git log --pretty=short    以简短的形式显示日志

git log --pretty=full    以正常版显示日志

git log --pretty=fuller    显示完整版的日志,其中包括文件的修改变化部分

git log --author=张旭峰    显示作者为张旭峰的提交

git log --grep=测试    显示说明中包含测试的提交

git log --since=2.weeks    显示指定时间之后的提交(2周以前)

git log --after=2.weeks    同since

git log --until="2016-11-04"    截止到2016-11-04之前的日志

git log --before="2016-11-04"    同until

git log --committer=张旭峰    提交者为张旭峰的日志

        

git commit --amend    将当前暂存区域的文件提交并与上一次提交合并,并且将此次提交的说明替换上次提交的说明

                      需要注意,如果上次提交之后修改了文件,并将其添加到了暂存区,那么其也会被一起合并到上次提交

git reset HEAD test.txt    将test.txt取消暂存,并且如果未暂存区域的该文件有修改,就以未暂存区域的该文件为准

git checkout -- test.txt    对于已修改未暂存的文件,将其回滚到最近一次提交时的状态

    

git remote    查看当前配置了哪些远程仓库,默认的远程仓库为origin

git remote -v    查看当前配置了哪些远程仓库,并且带上仓库地址

git remote add xufeng git://oschina.net/xufeng.git    在添加一个名为xufeng的远程仓库

 

git fetch    从远程拉取代码到本地,但是不会自动合并当前分支

git pull    从远程拉取代码到本地,但是会将当前分支代码自动合并

git push [remote-name] [branch-name]    将当前代码推送到指定仓库的指定分支

git remote show [remote-name]    显示远程某个分支的详细信息,主要包含远程的分支和本地的分支,以及本地与远程分支的对应信息

git remote rename orgName newName    重命名远程的仓库名

git tag    显示所有的标签

git tag -l v1.0.*    显示标签名前缀为v1.0.的标签

git tag -a v1.0.0 -m "初始版本"    创建一个名为v1.0.0的tag

git show v1.0.0    显示v1.0.0的标签内容,其中包含各个提交的详细信息

git tag -s v1.0.0 -m "签署标签"    当拥有自己的私钥时签署GPG标签的命令

git tav -v v1.0.0    验证签署标签

git tag v1.0.0    创建一个轻量级标签v1.0.0

git tag v1.0.0 b260b7f1f83437f6a07ac177908f36734484d5b5 -m "初次提交"    在指定的提交处创建tag,并添加描述信息

git push origin [tagname]    将指定标签名的标签推送到服务器上去,默认情况下标签是不会推送到服务器上的

git push origin --tag    将本地所有的标签都推送到服务器上

 

git branch testing    创建一个testing分支

git checkout testing    切换到testing分支

git checkout -b testing    创建testing分支并切换到该分支

git merge testing    将testing分支的代码合并到当前分支,如果合并过程产生冲突,那么冲突标记的上半部分(HEAD部分)表示你当前所处的分支的代码

                     下半部分表示你合并过来的分支的代码

git branch -d testing    删除testing分支,注意这里需要当前分支已经完全merge了testing分支

git branch -D testing    删除testing分支,无论testing分支是否有内容未合并到当前分支

git branch -v    显示当前所有的分支,并且显示相应的最新的提交信息

git branch --merge    查看哪些分支并入到了当前分支,即哪些分支是当前分支的直接上游

git branch --no-merge    查看哪些分支还未并入到当前分支

git checkout -b [分支名] [远程名]/[分支名]    创建一个分支并切换到该分支,将该分支与指定的远程分支对应起来

git checkout --track [远程名]/[分支名]    创建一个与指定远程分支同名的分支,切换到该分支,并将该分支与远程分支对应起来

git push [远程名] :[分支名]    删除指定的远程分支,这里注意在冒号前面有一个空格

 

git fetch origin    将远程的当前分支拉下来,但是并未合到本地的当前分支中,该命令一般和下面一条命令合用

git merge origin/serverfix    将(拉下来的)本地的serverfix分支合到当前分支

git checkout --track origin/serverfix    在本地创建serverfix分支,并将其与远程的serverfix分支关联起来

 

git push --set-upstream origin test    将当前分支指定与远程的origin/test分支关联起来

 

git merge test    将test分支与当前分支合并,其合并原理是找到当前分支和test的共同祖先,并且将当前分支,test分支以及共同祖先进行简单的三方合并

git rebase master    将当前分支合并到master分支,其合并原理是将当前分支打一个补丁,并且在当前分支和master分支的共同祖先去往master的线路的第一个节点(共同祖先的下一个节点)处将打的当前分支的补丁补进去,并且去>往master分支的后续节点都会应用该补丁,直到补到master所在的节点,其结果就是在master的下游直接产生了一个节点,最后再回到master分支将rebase的分支合并过来。这样做的目的主要是为rebase的分支产生更加清晰的提交记录

git rebase --onto master server client    取出client分支,找出client分支和server分支的共同祖先之后的变化,然后把它们在master上重演一遍(重演之后需要执行git checkout master和git merge client才能将重演之后的代码

合并到master分支)

git rebase [主分支] [特性分支]    如git rebase master server,将server分支在master分支上进行重演

说明:衍合操作只能在你本地所独有的分支上进行,因为如果分支一旦发布出去,比如远程有两个分支,另外有人在其中一个分支上工作,而此时你又把该分支给衍合到了主干分支,那么在该分支上工作的人最后提交代码时也不得不进行

一次衍合操作

 

ssh-keygen    生成ssh key

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值