Git:日常命令
- 1. Git创建一个分支:
- 2. 将该分支推送到远程:
- 3. 删除一条本地分支和其对应的远程分支
- 4. 在master主干,合并develop分支:
- 5. 清理远程分支,把本地不存在的远程分支删除
- 6. 将远程分支live_video 获取到本地 live_video
- 7. 在一个分支之上,打标签操作
- 8. tag是对历史一个提交id的引用
- 9. 切换到tag分支
- 10. 推送本地分支tag到远程
- 11. 删除一个本地tag
- 12. 删除远程tag
- 13. Git忽略规则
- 14. .gitignore规则不生效的解决办法
- 15. A分支合并B分支部分文件
- 16. 说一种场景
- 17. 如何恢复删除的部分文件
- 18. 如何更新本地关联git远程地址
- 19. Merge到中途,想放弃合并
同步于简书:https://www.jianshu.com/p/83a9c3970e5a
1. Git创建一个分支:
- 假设我现在在Develop分支上:
// 那么通过这行命令,我就在本地新建了一个develop_1分支
git checkout -b develop_1
2. 将该分支推送到远程:
git push -u origin develop_1
解决Enter passphrase for key '/Users/mac/.ssh/id_rsa':的问题
出现这个问题是因为在配置公钥的时候passphrase 设置了密码的解决方法:
打开终端:
ssh-add -K /Users/mac/.ssh/id_rsa ---- 注意:mac为你的电脑的用户名
然后按enter, 输入密码,之后会出现你的邮箱账号,则为成功,下次pull或者push的时候就可以不用再输入密码了
这样,其他人通过
// 获取远程更新,就可以下载clone该条分支的代码,然后合作开发一些东西了
git fetch origin
// 更新远程分支
git remote update origin --prune
git remote update origin -p
3. 删除一条本地分支和其对应的远程分支
// 首先删除本地分支
git branch -d develop_1
这样就删除了本地的develop_1分支,那么接下来删除其对应的远程分支:
git push --delete origin develop_1
这样就完成了
4. 在master主干,合并develop分支:
git merge --no-ff -m "merge with develop" develop
5. 清理远程分支,把本地不存在的远程分支删除
git remote prune origin
6. 将远程分支live_video 获取到本地 live_video
git checkout -b live_video origin/live_video
7. 在一个分支之上,打标签操作
git tag v1.0
即打了一个v1.0的标签.
8. tag是对历史一个提交id的引用
使用git checkout tag即可切换到指定tag,例如:
git checkout v0.1.0
9. 切换到tag分支
历史记录会处在分离头指针状态,这个修改是很危险的,在切换回主线时如果没有合并,之前的修改提交基本都会丢失,如果需要修改可以尝试
git checkout -b branch tag
创建一个基于指定tag的分支
10. 推送本地分支tag到远程
git push --tags
11. 删除一个本地tag
git tag -d v1.1
12. 删除远程tag
git push origin --delete tag V1.1
13. Git忽略规则
git中忽略掉某文件不提交,可以修改.gitignore来实现,每一行都是一个忽略规则,举例:
- #此为注释 – 将被 Git 忽略
- *.sample # 忽略所有 .sample 结尾的文件
- !lib.sample # 但 lib.sample 除外
- /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
- build/ # 忽略 build/ 目录下的所有文件
- doc/*.txt # 忽略 doc/notes.txt 但不包括 doc/server/arch.txt
14. .gitignore规则不生效的解决办法
把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。那么解决方法就是先把本地缓存删除(改变成未被追踪状态),然后再提交
// 放心使用如下几行命令,不会删除你什么代码的;)
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
15. A分支合并B分支部分文件
若A分支需要合并B分支的文件file-01,其他B分支文件不想合并到A,在A分支下执行如下命令即可
git checkout B file-01
// 这里在写个更具体的,如果我在fixbug_179分支上,需要合并dev_180分支上audio文件夹下所有文件
// 注意是全路径才会合并成功
git checkout dev_180 /Users/aaron/Desktop/Work/MLY/code/miliyo/libcomm/src/main/java/com/cc/comm/audio/
16. 说一种场景
Dev分支上开发,结果代码写在了Master分支上,首先把所有修改都git add进暂存区不要Commit,然后:
// 把暂存区内的修改存储起来
git stash
// 切换到正确的分支
git checkout dev
// 将存储的修改取出来
git stash pop
如果已经commit了,则
git reset HEAD^
17. 如何恢复删除的部分文件
// 此句恢复 liblive/src/main/jniLibs/armeabi-v7a 这个目录下所有删除的文件
git checkout -- liblive/src/main/jniLibs/armeabi-v7a/
// 此句恢复 liblive/src/main/java/com/cc/live/xyz.java 单个xyz.java 文件
git checkout -- liblive/src/main/java/com/cc/live/xyz.java
18. 如何更新本地关联git远程地址
项目远程地址变化了,如何更新本地关联git远程地址
// 1. 先删除之前的仓库地址
git remote rm origin
// 2. 进行设置仓库新地址:url是新git地址
git remote add origin url
// 3. 重新拉取一下
git fetch
// 4. 重新关联远程地址
git branch --set-upstream-to=origin/master master
19. Merge到中途,想放弃合并
you need to resolve your current index first
git reset --merge
参考链接
- https://www.cnblogs.com/zhangxiaoliu/p/6008038.html
- https://www.cnblogs.com/xulingfeng/p/5864041.html
- https://edison-cool911.iteye.com/blog/2325747
- 学习git最佳教程,没有之一
- http://marklodato.github.io/visual-git-guide/index-zh-cn.html
- https://learngitbranching.js.org/
- http://rogerdudler.github.io/git-guide/index.zh.html
- https://www.cnblogs.com/kevingrace/p/5690241.html
- http://www.ruanyifeng.com/blog/2012/07/git.html
- https://git-scm.com/book/zh/v2 (个人感觉这篇是最全的)