GIT 实用命令大全

(--全拼参数  -缩写参数)
clear 在git bash中清屏
git 命令如config --help 查看该命令帮助文档
git --version 查看git版本号
git log 回顾下所有人的提交历史
git log --oneline --decorate --graph --all 输出你的提交历史、各个分支的指向以及项目的分支分叉情况
git reflog 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作), 可用于恢复
git config --list 显示当前的Git配置,键入"q"退出
git config --global user.name "John Doe"                              git配置用户名
git config --global user.email "johndoe@example.com"                  git配置邮件地址
git clone git@bitbucket.org:公司名/项目名.git                          克隆远端所有分支代码仓库,本地创建默认master分支
git clone -b 分支名 git@bitbucket.org:公司名/项目名.git                 克隆远端所有分支代码仓库,本地仅创建指明分支
git clone -b 分支名 --single-branch git@bitbucket.org:公司名/项目名.git 仅克隆远端当前分支仓库代码

------------------------------------------------------------------------------------variables
打标签
git commit -m "Update version number to 2.7.8.0.2 and last updated time. Add tag 2.7.8.0.2"
git tag -a <tag名> <commit对应的hash码> -m "Release version 1.01"
注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。
例子,如下:
git tag -a 2.7.8.0.2 69e80e369c698bab74d4301755227f62d6f50f4a -m "2.7.8.0.2"
提交标签到远程仓库
git push origin --tags
注解:就像git push origin master 把本地修改提交到远程仓库一样,-tags可以把本地的打的标签全部提交到远程仓库。

http://blog.csdn.net/jeffasd/article/details/49863335
http://blog.csdn.net/wangjia55/article/details/8793577/

查看所有标签
git ls-remote --tags 显示当前分支下,所有标签名和commit_id列表

删除某个tag 
git tag -d 2.7.8.0.2 删除这个tag(本地) 
git push origin :refs/tags/2.7.8.0.2 删除这个tag(服务器),这时可以发现Bitbucket网上的那个tag不见了

git checkout <tag名> 使用tag处的commit还原当前git, 如 git checkout '2.4.2.0'

------------------------------------------------------------------------------------
工作区 [Untracked]

git add <file> 跟踪新文件(由untracked->tracked)

------------------------------------------------------------------------------------
工作区 [Modified]

本地修改文件后,在phpstorm中当前文件下,使用右键-> git -> Compare with the Same Repository Version,将当前工作区文件和本地版本仓库比较

git status          查看所有文件状态
git status -uno     查看文件状态,不显示Untracked

git checkout -- <file>... 从本地暂存区检出覆盖工作区(用于在git add之前,撤销当前修改)
git checkout .            从本地暂存区检出覆盖工作区(用于在git add之前,撤销所有修改)

------------------------------------------------------------------------------------
工作区-->暂存区 [Staged]

git add .或<file>...      添加到staged暂存区 (选中cmd窗口中的文件名,按一下鼠标中间自动粘贴), 
                          或跟踪新文件(由untracked->tracked), 合并时把有冲突的文件标记为已解决状态

git reset HEAD <file>...  从本地版本库检出覆盖暂存区(移出暂存区当前文件,status变为Modified)
git reset .               从本地版本库检出覆盖暂存区(移除暂存区所有文件,status变为Modified)

git rm <file>...          (针对UnModified)移除版本库,删除文件,并暂存待提交
git rm --cached <file>... (针对UnModified)移除版本库和暂存区,不删除文件,status->Untracked files, 且不会被提交,如果push之前重新add还是会提交,常用于新建的文件,且不想跟踪此文件了

------------------------------------------------------------------------------------
暂存区-->资源库(版本库)

git commit -m "message"  

git reset --soft HEAD^          撤销上一次的提交(status变为commit前add后)
git reset HEAD^                 撤销上一次的提交(status变成add之前状态)
git reset --hard HEAD^          撤销上一次的提交,撤销当前所有修改(status变为UnModified)


git reset --hard 版本号          本地回退到任意历史版本,可配合git reflog使用(用于任何状态)
git reset --hard origin/master  放弃本地修改, 使用远程版本库强制更新(用于任何状态)
git reset --hard                本地回退到最新版本库(用于任何状态)

------------------------------------------------------------------------------------
-->提交本地版本库 到远程仓库

git pull origin dev             取回远程仓库的变化,并与本地分支即版本库合并(=git fetch + git merge)
git pull origin dev --rebase    
git push origin dev             传本地当前分支到远程仓库dev分支

git fetch origin master          从远程的origin仓库的master分支下载代码
git diff origin/master master    查看本地分支和远程分支的差异
                                 "---"表示变动前的文件,"+++"表示变动后的文件。
                                 变动的位置用@@作为起首和结束。
                                 @@ -1,5 +1,4 @@ 表示-第一个文件的1,第一行开始,5连续五行 +第二个文件1,第一行开始,4连续四行
                                 + 代码... 表示增加的代码,-表示减少的代码

git reset --merge               回退merge操作
git reset --hard commit_id     本地回退到任意版本(可用 git log –-oneline 查看)
git push origin HEAD --force   #远程提交回退

git revert <commit_id>         本地和远程同时回退到任意版本

git reset --soft|--mixed|--hard <commit_id> 
                    --mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.
                    --soft     保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
                    --hard     源码也会回退到某个版本,commit和index 都会回退到某个版本.

------------------------------------------------------------------------------------
<处理冲突文件>
(三种状态:绿色的文件没有冲突可以commit,红色的文件unmerged paths表示冲突需手动合并,not staged for commit表示修改过的还没有add但不冲突)
git stash               丢弃当前修改,并将修改保存起来,没有暂存注释
git pull origin master  拉取远程master分支
git stash list          查看暂存的信息
git stash pop stash@{0} 恢复暂存信息,并丢弃暂存文件
冲突提示:
Auto-merging c/environ.c
CONFLICT (content): Merge conflict in c/environ.c
打开相关文件处理冲突并修改完后,没有问题时,可以正常提交。

git stash save "work in progress." 丢弃当前修改,并将修改保存起来,添加暂存注释
git stash apply stash@{0}          应用暂存起来的某次修改
git stash drop  stash@{0}          移除保存过的stash
git stash clear                    清除所有暂存文件

git stash -p 交互式命令,我们可以一个文件一个文件的遍历,决定每个文件的操作方式
[y,n,q,a,d,/,?]含义:
   y - stage this hunk
   n - do not stage this hunk
   q - quit; do not stage this hunk nor any of the remaining ones
   a - stage this hunk and all later hunks in the file
   d - do not stage this hunk nor any of the later hunks in the file
   g - select a hunk to go to
   / - search for a hunk matching the given regex
   j - leave this hunk undecided, see next undecided hunk
   J - leave this hunk undecided, see next hunk
   k - leave this hunk undecided, see previous undecided hunk
   K - leave this hunk undecided, see previous hunk
   s - split the current hunk into smaller hunks
   e - manually edit the current hunk
   ? - print help

------------------------------------------------------------------------------------
<分支操作>

git branch -a          查看分支,找到将要切换到的分支
git branch branchName  创建分支
git branch             不带参数:列出本地分支,当前分支前加“*”号
git branch -vv         查看目前分支的“关联”情况,即本地分支的远程跟踪情况

git checkout -b branchName     创建并切换分支(-B 强制切换,没有创建,有的话会覆盖)
git checkout -b serverfix origin/serverfix         基于远程origin/serverfix分支,创建本地跟踪serverfix分支
git checkout --track origin/serverfix              创建一个serverfix分支,并将其配置为远程origin/serverfix的跟踪分支(好用)
git branch --set-upstream-to=origin/master master  配置本地分支master,跟踪远程分支origin/master,也可以直接拉取git pull origin master.
git branch -d <branch,如dev, hotfix>               删除本地分支(使用-D参数,强制删除分支)
git remote set-head origin -d  删除游离分支 (查看分支后,发现remotes/origin/HEAD -> origin/master, 即HEAD处于游离状态)

git checkout master              切换到master分支
git checkout master, git merge hotfix   切换到master分支,后将hotfix合并到当前分支master上
git merge dev                    将本地dev分支合并到当前分支
git merge origin master          合并远程分支最新代码到当前分支
git push origin dev              推送本地指定分支代码到远程仓库
git push origin --delete bugfix  从服务器上删除 bugfix 分支
git cherry-pick commit_id        将任意分支的一次(或多次)commit_id,提交到当前分支下
git cherry-pick --abort          当前分支恢复到cherry-pick之前的状态

git ls-remote <remote,如igiorn>    来显式地获得远程引用的完整列表, 列出所有的分支/标签tags
git remote show <remote,如origin>  获得远程分支的更多信息
git fsck --lost-found              通过.git/lost-found/other这个路径,你可以恢复任何你git add过的文件

以master分支的某个commit点为基础,创建新分支dev
git branch dev 创建空dev分支
git pull origin master 拉取分支上的最新代码
git reset --hard <commit-id>|<tag> 还原到基点
git checkout dev 切换到新分支
git push origin dev 提交代码到远程分支

------------------------------------------------------------------------------------
<内容比较操作>

git diff 不加参数即默认比较工作区与暂存区的差别
git diff --cached [<path>...] 比较的是暂存区和最新本地版本库的差别
git diff HEAD [<path>...]  比较工作区与最新本地版本库,如果HEAD指向的是master分支,那么HEAD还可以换成master

------------------------------------------------------------------------------------
<Merging 冲突解决 git pull之后>

git merge --abort 退出merging,丢弃合并

一、出现merging冲突的原因:git远程上存在一个本地不存在的git 分支,就是本地远程代码不同步

二、解决方式:

方法一:

git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,
git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,
然后可以提交git add . 加入索引库,然后本地提交git commit -m '注释' 最后git push到远程。

方法二:

1.git pull  更新代码,发现

error: Your local changes to the following files would be overwritten by merge:pom.xml

Please commit your changes or stash them before you merge.
这说明你的pom.xml与远程有冲突,你需要先提交本地的修改然后更新。

2.git add pom.xml
git commit -m '冲突解决',提交本地的pom.xml文件,不进行推送远程

3.git pull   更新代码

Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Automatic merge failed; fix conflicts and then commit the result.

更新后你的本地分支上会出现 (develop|MERGING)类似这种标志

4.找到你本地的pom.xml文件,并打开

你会在文件中发现<<<<<<< HEAD ,=======  ,>>>>>>> ae9a0f6b7e42fda2ce9b14a21a7a03cfc5344d61

这种标记,<<<<<<< HEAD和=======中间的是你自己的代码,  =======  和>>>>>>>中间的是其他人修改的代码

自己确定保留那一部分代码,最后删除<<<<<<< HEAD ,=======  ,>>>>>>>这种标志

5.git add pom.xml    git commit -m '冲突解决结束'   再次将本地的pom.xml文件提交

6.git push   将解决冲突后的文件推送到远程

machine type, 0:default,empty/unknown, 1: washer, 2: dryer, 3: front load washer, 4: top load washer, 5: stack washer/dryer 6: stack dryer/dryer
machine type, 0:default,empty/unknown, 1: washer, 2: dryer, 3: front load washer, 4: top load washer, 5: stack washer/dryer 6: stack dryer/dryer

参考手册: https://git-scm.com/book/zh/v2
https://techtrex.sharepoint.com/:u:/g/Deployment/EY1vFEvQKZlLvNYUj9Ws6tIB3D-WFp22sAoqp9YmwVkOLw?e=L2au1u 
 


参考手册: https://git-scm.com/book/zh/v2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值