Git使用规范-参考版
1、master分支:稳定的、已发布版本的分支
master分支的一个硬性要求是,不允许在master上直接提交修改,只能从别的分支上合并代码过来。
基本存在两种合并情况
- develop分支开发完成,且测试通过,达到发布状态时,可以把develop上的修改合并到master
- 已发布的版本,发现紧急bug需要修改并发布的,从对应的master分支上切出hotfix分支,在hotfix上修改并测试通过达到发布状态,再从hotfix上合并到master,此时可能还需要同步到develop等其它分支。
2. develop分支:比较稳定的开发分支
develop分支一般用最新待提测版本的分支。但每次develop分支的提交,应该是某一修改或功能完成度已经比较完善的。如果功能较大,或开发周期超出下个版本的,应在feature分支上开发完成后,再合并到develop分支。
3. feature-xxx 分支:个人分支或长线功能分支
一个功能较大,在未完成前不能提交到develop分支,这时可以自己切出feature-xxx分支,在上面允许频繁提交,功能完成后再合并到feature-xxx分支。feature-xxx分支合并到develop后,应该立即或定期删除,避免僵尸分支过多。
4. hotfixes-xxx分支:稳定版本应急打补丁分支
在hotfixes上应急修改并发布后,需要合并到master和develop分支。
5. release分支:为了简化分支种类,我们不使用release分支,只需要在master上标注tag来指明版本发布情况即可。
git基础教程
基础命令介绍
1.更改文件名字
git mv file_from file_to
2.查看提交历史
git log
3.最近2次提交的文件差异
git log -p -2
4.查看远程仓库分支
git remote -v
5.创建新分支
git branch new_go_branch
git push --set-upstream origin new_go_branch
6.分支重命名
git remote rename new_go_branch new_go_test_branch
git branch -m oldName newName
7.删除远程分支
git remote rm new_go_test_branch
git push origin --delete old_branch
8.删除本地分支,需要push才算真正删除
git branch -D new_go_test_branch
9.git 给分支打tag
(1) 创建tag
选项-a 表示创建tag,
-m 选项指定了一条将会存储在标签中的信息。如果没有为附注标签指定一条信息,Git 会运行编辑器要求你输入信息。
git tag -a v1.4 -m "my version 1.4"
(2)查看指定tag信息
git show v1.4
tag v1.4
Tagger: tenlu <2414958430@qq.com>
Date: Sun Nov 10 20:00:52 2019 +0800
my version
commit 8e3f5a68b90d90486354ff9e9038ce12ecf808b6 (HEAD -> v1.4, tag: v1.4)
Author: tenlu <2414958430@qq.com>
...
(3)删除tag
git tag -d v1.4 需要push 才算真正删除
(4)补打标签:给指定的 commit 打标签
git tag -a v1.1 -m "test" 8e3f5a68b90d90486354ff9e9038ce12ecf808b6
(5)切换到指定tag
git checkout -b v1.1
(6)提交tag到远程仓库
git push origin v1.1
(7)切换tag
git checkout v1.1
10. 将指定文件从版本库从删除
git rm --cached hello.py
11.删除远程分支
git push origin :refs/origin/v0.1.2-branch
git push origin --delete v0.1.2-branch
特殊命令介绍
git rebase
1.git rebase 将多个提交commit合并为一个提交commit
例如我们来合并最近的 4 次提交纪录
git log
commit a8c0f351a8de45710d82c8f25ba7366c56c21a40 (HEAD -> master)
commit a8c0f351a8de45710d82c8f25ba7366c56c21a40 (HEAD -> master)
commit a8c0f351a8de45710d82c8f25ba7366c56c21a40 (HEAD -> master)
commit a8c0f351a8de45710d82c8f25ba7366c56c21a40 (HEAD -> master)
....
使用git rebase -i HEAD~4
pick 08c2219 1
pick 3864e08 2
pick 38dd470 3
pick a8c0f35 4
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
设置为
pick 08c2219 1
s 3864e08 2
s 38dd470 3
s a8c0f35 4
...
然后保存
使用git rebase --continue 继续进行编辑
如果窗口异常退出使用
git rebase --edit-todo
.gitimodules文件的使用
从git官网上down了个开源代码,在此基础上开发出适合项目需求的程序,如果不想重复的上传别人的代码,此时需要将新添加的程序和改动的程序利用git保存,同时利用".gitimodules"指明依赖的程序地址。
plain
[submodule "ssd"] #子模块名称
path = Detect/ssd #存放子模块的地址
url = https://github.com/weiliu89/caffe/tree/ssd #子模块的原始路径
子模块使用时通过以下命令拉取即可。
git submodule update --init
上述两个文件均需要**添加至git的版本库,**以便对其改动进行跟踪**。**
git.暂存
(1) 设置暂存
git stash save save_name(暂存的名字)
(2)查看所有的暂存
git stash list
git stash show
(3)恢复暂存的工作
a. 'pop命令恢复,恢复后,暂存区域会删除当前的记录'
恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash pop stash@{index}
b. 'apply命令恢复,恢复后,暂存区域会保留当前的记录'
恢复指定的暂存工作, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash apply stash@{index}
(4)删除暂存
删除某个暂存, 暂存记录保存在list内,需要通过list索引index取出恢复
git stash drop stash@{index}
删除全部暂存
git stash clear
git stash apply和pop区别
git stash apply 暂存记录还存在
git stash pop 暂存记录不存在了
https://www.cnblogs.com/zndxall/archive/2018/09/04/9586088.html
拉取远程服务器代码免密码登录
本机拉取远程服务器代码 免密登录的办法是将本机的ssh公钥添加到服务器下的git账户下的authorized_keys下 .ssh文件赋予权限700,authorized_keys文件赋予权限644就可以了
查看某次提交的变动
git show 0a052543b8b07da5ceabcc8c1a38df97a45bd52
查看最近2次的log
git log -2
查看最近一次的log变动
git log -p -1
远程仓库
获取远程仓库地址
git remote -v
https://git.100.com/tool/ctxapi.git
重新设置远程仓库地址
git remote set-url origin https://git.100.com/tool/ctxapi.git
版本回退
git reset --hard 0a052543b8b07da5ceabcc8c1a38df97a45bd529
git reset 三种模式
https://www.jianshu.com/p/c2ec5f06cf1a
如果你已经将错误的提交推送到了远程仓库,并希望撤销这次提交,可以通过以下步骤操作。这里提供两种常见的方法:使用 git revert 和 git reset。选择哪种方法取决于你的具体需求和团队的工作流程。
使用 git revert git revert 会创建一个新的提交,这个提交是对错误提交的逆向操作。这种方法的好处是它不会改变项目的历史记录,更安全,特别是在多人协作的项目中。
首先,找到你想要撤销的提交的哈希值。可以通过 git log 查看提交历史。 然后,运行 git revert ,将 替换为你想要撤销的提交的哈希值。 解决可能出现的冲突,并提交这个逆向操作。 最后,使用 git push 将这个逆向提交推送到远程仓库。 使用 git reset git reset 会将分支回退到指定的提交,可以用来撤销错误的提交。但是,这会改变项目的历史记录,如果你已经将错误的提交推送到了远程仓库,你需要强制推送来覆盖远程仓库的历史,这可能会对其他协作者造成影响。
使用 git log 查看提交历史,找到你想要回退到的提交的哈希值。这应该是错误提交之前的一个提交。 运行 git reset --hard ,将 替换为你选择的提交的哈希值。 使用 git push --force 强制推送到远程仓库。注意,这会覆盖远程仓库的历史,可能会对其他协作者造成影响。 注意事项 在使用 git reset --hard 和 git push --force 之前,确保了解这些命令的影响,特别是在多人协作的项目中。 如果不确定,最好与团队成员讨论后再执行这些操作。 对于公共历史,推荐使用 git revert,因为它不会改变历史记录。 选择合适的方法根据你的具体情况和团队的工作流程来决定。
1.猴子都能懂的git入门教程
2.git简易教程
git restore --staged 将文件从暂存区撤出,但不会撤销文件的更改
git resore 将不在暂存区的文件撤销更改git
git reset --soft HEAD 撤销已提交push的文件操作
git reset --hard 73100ea9e78b2684391711261a041f65f6e5d272 撤销到指定的commit版本
git reset --hard HEAD^ 撤销上一次提交
参考资料: www.jianshu.com/p/36202c29e… git-scm.com/book/zh/v2/…
问题:
解决git 出现 Your account has been blocked问题
使用git 出现 Your account has been blocked
无法从远程pull代码下来,
解决方案如下:
$ git push origin master GitLab: Your account has been blocked. fatal: Could not read from remote repository.
git 提交时出现以上问题,只用重新设置下远程url即可
$ git remote set-url origin git@yourhost.com:org/project.git