(--全拼参数 -缩写参数)
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