git config --global user.name “zhangxing”
git config --global user.email “xingzhang@sf-express.com”
git pull
git status
git log 显示所有提交过的版本信息
git add .
git commit -m “describe”
git commit -a 除了将暂存区里的文件提交外,还提交 Changes bu not updated 中的文件。
git commit 提交的是暂存区里面的内容,也就是 Changes to be committed 中的文件。
git push -u origin master
jetty:run -Djetty.port=8099
git log -p
git show 加上版本hash,查看某次具体修改
如果在回退以后又想再次回到之前的版本,可以用reflog查看到commit id 并使用reset设置
git reflog
dae675a HEAD@{0}: reset: moving to HEAD^
8e27eb6 HEAD@{1}: commit: append GPL
dae675a HEAD@{2}: commit: add distributed
c412f7e HEAD@{3}: commit (initial): wrote a readme file
git reset --hard 8e27eb6
HEAD is now at 8e27eb6 append GPL
HEAD 值
HEAD 表示提交的最新版本。HEAD^表示上一个版本,HEAD^^表示上上个版本。HEAD~100表示往上100个版本。
分支:
查看分支:git branch
创建分支:git branch
切换分支:git checkout
创建+切换分支:git
合并某分支到当前分支:git merge
删除分支:git branch -d
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name]
拉取远程分支代码到本地并创建分支ggtopic/V2 origin/topic/V2
git add . :他会监控工作区的状态树,使用它会把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件。
–hard
git add -u :他仅监控已经被add的文件(即tracked file),他会将被修改的文件提交到暂存区。add -u 不会提交新文件(untracked file)。(git add --update的缩写)
git add -A :是上面两个功能的合集(git add --all的缩写)
git diff 看冲突
git mergetool
git commit -m “merge”
- 开发分支开发,commit代码
- git fetch
- git checkout --track -b push_1128 origin/master
- git log branch_xxx -n 查看开发分支提交日志,找commit id
- git cherry-pick xxx 条件提交到push分支
- 解决冲突
- 编译验证–重要!!!
- git push origin HEAD:refs/for/master
查看远程分支:$ git branch -r
获取远程分支信息git fetch origin
比较和远程分支差异git diff master origin/master
git diff origin/master origin/release
git log --graph --decorate --oneline --simplify-by-decoration --all
显示图谱
我看到的更好的方法。
- git log filename
可以看到fileName相关的commit记录 - git log -p filename
可以显示每次提交的diff(包括远程) - 只看某次提交中的某个文件变化,可以直接加上fileName
git show c5e69804bbd9725b5dece57f8cbece4a96b9f80b filename
git cherry-pick
git cherry-pick用于把另一个本地分支的commit修改应用到当前分支。
实际问题
在本地 master 分支上做了一个commit ( 38361a68138140827b31b72f8bbfd88b3705d77a ) , 如何把它放到 本地 old_cc 分支上?
办法之一:
----------------------------tag---------------------------
Git标签可以针对某一时间点的版本做标记,常用于版本发布。
列出标签
$ git tag # 在控制台打印出当前仓库的所有标签
$ git tag -l ‘v0.1.*’ # 搜索符合模式的标签
打标签
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。
创建轻量标签
$ git tag v0.1.2-light
创建附注标签
$ git tag -a v0.1.2 -m “0.1.2版本”
创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签时,参数a即annotated的缩写(怎么我感觉是add的缩写呢),指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
查看标签信息
用git show命令可以查看标签的版本信息:
$ git show v0.1.2
切换到标签
与切换分支命令相同,用git checkout [tagname]
删除标签
误打或需要修改标签时,需要先将标签删除,再打新标签。
$ git tag -d v0.1.2 # 删除标签
参数d即delete的缩写,意为删除其后指定的标签。
补打标签
给指定的commit打标签
打标签不必要在head之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和(通过git log获取)。
$ git tag -a v0.1.1 9fbc3d0
标签发布
通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
$ git push origin v0.1.2 # 将v0.1.2标签提交到git服务器
$ git push origin –tags # 将本地所有标签一次性提交到git服务器
注意:如果想看之前某个标签状态下的文件,可以这样操作
git tag 查看当前分支下的标签
git checkout v0.21 此时会指向打v0.21标签时的代码状态,(但现在处于一个空的分支上)
方式一:修改远程仓库地址
更换远程仓库地址,URL为新地址。
【git remote set-url origin URL】
git查看远程仓库地址命令
git remote -v
git cherry-pick *****
git checkout -b *** origin ****
revert 后合并代码被冲掉:
解决方法:
在 revert feature 的 merge 之后,checkout 到 feature 分支,
使用 git reset head^ 撤销上次提交(如果merge前有多个提交就撤消所有提交)
然后修改有问题的代码,代码没问题的话不修改也行
修改完后 ,将代码提交并强推到远程分支
git add .
git commit -m “”
git push -f