1. 切换分支 git checkout 分支名
2. 创建并切换到新分支 git checkout -b 分支名
3. 查看本地和远程所有分支 git branch -a
4. 查看本地分支或远程分支 git branch git branch -r
5. 直接新建本地分支,将远程分支提取出来 git checkout -b local_branch origin/local_branch
6. 本地分支改名 git branch -m 原名 更改的名
7. 合并远程master分支到当前分支 git merge origin master
8. 将当前分支push到远程master分支 git push origin master
9. 删除远程仓库的xx分支 git push origin :xx
10.获取远程分支master并merge到当前分支 git pull origin master
将远程a分支拉取并合并到本地b分支 git pull a b
11. 强制删除本地的xx分支 git branch -D xx
12 设置远程分支和本地分支的追踪关系 git branch -u origin/remote_branch_name local_branch_name
6. 查看当前版本状态(是否修改) git status
7. 增加x,y,z文件至index git add x y z
8. 删除index中的文件x git rm x
8. 增加当前子目录下所有更改过的文件至index git add .
9. 放弃修改x文件,还原该文件 git checkout x
9. git commit -m ‘xxx’
11.显示提交日志 git log
12.仅显示最后一次提交日志 git log -n 1
13.显示最后一次提交所有更改过的文件 git log -n 1 --stat
14.显示最近一次提交的所有更改细节 git log -n 1 -p
15.回退到merge前 git reset —merge
16.刷新远程分支。 git remote update
16. 回退
1.git log查看提交历史
2.git reset jbjhs(某个commit)/git reset —hard jbjhs (回退到这个commit,之前的修改全部舍弃)/git reset HEAD(回退到上一个版本)/git reset HEAD test.java(将该文件回退到上个版本)/git reset —hard origin/master将本地回退到和远程一样/git revert HEAD按照上次commit的相反再commit一次
3. Git push origin master —force(需要关闭分支保护,push之后再开启分支保护)
4. Git reset —soft head^ 保留修改,但commit回到上一个
17 本地解冲突步骤(a合到test有冲突):
(1)git checkout test, git pull origin test
(2) git merge —no-ff a
(3) 解冲突
(4) git add . Git commit -m ‘’
(5) git push origin test
如果在很早的master上拉取的分支开发,可能会有冲突,先将master merge到开发分支解冲突。
18 拉取远程master更新时,本地master分支有未提交的文件
git stash
git pull
git stash pop
20 把一个仓库b的内容push到另外一个仓库a
git remote add notebook http://git.corp.kuaishou.com/huangqixiang/jupyter-notebook.git(在a上建立远程notebook,来自于仓库b)
git pull notebook master(在a上就可以把b合到a了)
21git rm -r --cached . (用来删除ignore不生效的方法)
git add .
git commit -m 'update .gitignore
22 git tag -a 0.1.3 -m “Release version 0.1.3″ (打标签发版)
Git add .
Git commit
git push origin —tags
git tag -d 0.1.3
git push origin :refs/tags/0.1.3
23. 新建git项目
git init
Git add .
Git commit -m ‘first commit'
git remote add origin https://github.com/hudeqi/test_sssp.git
git push -u origin master
24. 查看当前分支更改了哪些 git diff .
25. 比较两个分支不同 git diff a b (a-,b+)
26. 查看某个commit内容 git show commitid
28. Git checkout commitId -b new_branch 以某个commit为止切个新分支
27. 迁移项目到另一个仓库
git remote set-url origin remote_git_address
git push
28 查看某次commit细节:git log、git show commit-id
29 查看某人代码提交行数
git log --author='username' --pretty=tformat: --numstat | awk '
{add += $1; subs += $2; loc += $1 - $2 } END { printf "添加了%s,删除了%s,合计%s\n", add, subs, loc }' -
30. git cherry-pick <commit id> 将某个commit的添加到当前分支下
31. Git rebase push时master有变更,需要先pull,pull完提交会分叉,先git rebase,再push,commit记录就会成为一条直线,你的提交就会在最上面
32. Git使用之Permission Denied问题解决:
1. ssh-keygen -t rsa -C "$your_email"
2. cat ~/.ssh/id_rsa.pub
3. 粘贴到git的ssh管理页面上
33. 两个git仓库合并:
1. git remote add other git@github.com:kktjs/kkt-next.git(将 kkt-next 作为远程仓库,添加到 kkt 中,设置别名为 other)
2. git fetch other (从 kkt-next 仓库中拉取数据到本仓库)
3. git checkout -b kkt-next other/master (将 kkt-next 仓库拉取的 master 分支作为新分支 checkout 到本地,新分支名设定为 kkt-next)
4. git checkout master (切换回 kkt 的 master 分支)
5. git merge kkt-next --allow-unrelated-histories (将 kkt-next 合并入 kkt 的 master 分支)
34. github fork后与源项目保持同步
1. git remote add src-cassandra https://github.com/apache/cassandra.git #添加源项目地址到本地
2. git pull src-cassandra trunk
3. git push #将刚更新的trunk(master)代码推送到fork后项目的trunk(master)分支
4. 然后就可以把更新从fork的trunk拉到本地自己分支合并了
35. Git rebase合并commit (https://segmentfault.com/a/1190000007748862)
36. 在开发分支上git rebase master,可以把master的更新拉到本地,不会产生多余的commit和分叉