您的位置:首页 > 其它

git常用命令大全

2017-02-07 00:00 295 查看
摘要: 本文记录了本人阅读git相关手册时学习到的git常用命令,现记录如下供自己学习和来者翻阅

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git常用命令