Git 的使用(多人协作)

本文深入探讨了Gitflow工作流的使用方法,包括分支管理、多人协作、冲突解决等核心内容。同时,详细讲解了Git的高级命令,如版本回退、撤销修改、stash的使用等,帮助读者掌握Git的高效运用。
  • Git flow 的使用
  • Git 的基本命令
  • Git 的使用流程

Git flow 是一个利于多人协作的一种工作方式;

常用的分支分为 master , develop, release, feature , hotfix ,others,
在这里插入图片描述


多人协作工作模式一般是这样的:

首先,可以试图用git push origin branch-name推送自己的修改。
如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。


从这个方向入手, 了解Git的使用, 不是单纯的使用一些基本的命令,最好可以加以练手;

git status 可以查看仓库的当前状态; (如果已经提交过了的话,这个是没有任何的信息的)
还是使用git log 查看修改信息. git reflog , 可以查看更加详细的信息;
如何需要查看具体的,则是使用git diff <filename> (查看详细状态);

git log 查看最近的提交状态, 但是由于信息太过于杂乱,可以使用git log --pretty=oneline;
以及 git log --oneline
版本回退
使用git reset 可以进行版本的回退,回退上一个版本: git reset --hard HEAD^ (hard与soft的区别)HEAD~20 (默认是mixed)
如果后悔了可以使用 git reset --hard 数字 (数字为commit id) 可以使用git reflog 来进行查看找到相应的commit id

撤销修改
使用 git status 查看在那个状态
没有git add , 直接删除 ,或者使用 git checkout --<文件名> ,来撤销操作

可以分为git add 后 , 可以使用

  • git reset HEAD<文件名> git status 查看
  • 在使用git checkout --<文件名> 清除在工作区的记录

与 git commit 后

  • 这是需要使用版本回退来进行操作;
    在这里插入图片描述

分支管理的使用;(重点)

git log --graph --pretty=oneline --abbrev-commit查看线
git log -p 可以查看修改的部分 与git diff 差不多; git show ,同理
git log --pretty=format:"%h - %an, %ar : %s"
git log --stat


多人协作:

  • 首先git clone
    默认情况下只能看到master的分支 使用git branch 进行查看;
  • 在dev 分支上开发 , git checkout -b dev origin/dev ;
  • 修改好了 git add . , git commit -m"xx", git push origin dev , 就可以了
    (如果git push 失败, 则需要先 git pull下来最新的代码, )
    现根据提示 使用 git branch --set-upstream-to=origin/dev dev (重点)
  • 在进行git pull , 但是此时会出现merge失败
    这事解决的方法与解决冲突的时一样的 ???
    在这里插入图片描述
    解决冲突重点(多人协作)
  1. error: Your local changes to the following files would be overwritten by merge出现错误时:
    参考:https://www.jianshu.com/p/344dd08905a2
    解决方法

  1. 当需要放弃自己本地,选择pull 远端仓库时,

可以使用一下命令:

```
git fetch --all
git reset --hard origin/master  (分支)
git pull
```
  1. Merge branch 'dev' of gitee.com:
    解决方案:
    添加链接描述

  2. Updates were rejected because the tip of your current branch is behind
    冲突解决
    手动解决冲突问题
    ===================================
    写的比较好的文章:https://blog.youkuaiyun.com/u013374164/article/details/78833173

git在线练习使用 :https://oschina.gitee.io/learn-git-branching/

git pull ⇒ git fetch 与 git merge 的合并操作

git branch -v 可以查看相应分支commit_id

git book https://git-scm.com/book/zh/v2


2021 3/28

git stash 的使用

使用场景:

1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git
stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。

2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git
stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。 总的来说,git
stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git
stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

使用方法:

git stash push -m ‘信息’
git stash pop

# 缓存当前工作区的内容到stashName, save 这个现在不怎么推荐用,图方便也能用
# -a|--all: 除了未跟踪的文件,其他变动的文件都会保存
# -u|--include-untracked:包括没有添加到暂存区的文件
git stash save stashName
git stash -u save stashName

# 现在基本推荐用 push,因为有 pop,语义上和维护上更清晰
# 上面有的参数,它也有,还有-m 来备注这个 stash 的大概情况
git stash push -m "更改了 xx" 

# 有保存那肯定也有取用的
# pop: 取会删除对应的保存记录
# apply: 取但保留记录
# 0就是--index,这个东西哪里来的呢?
git stash apply stash@{0}
git stash pop stash@{0}

# 查看stash 保存记录
# eg: stash@{0}: On dev: 测试
git stash list


# 只想删除暂存记录怎么办:
# clear : 清空所有 stash
# drop: 清除指定的 stash
git stash clear # 慎用!
git stash drop stash@{0}

# 想看 stash 做了什么改动,类似简化版的git diff
git stash show stash@{0}

### Git多人协作的最佳实践与分支管理 #### 一. 分布式版本控制系统的特性 Git是一个分布式版本控制系统,专为处理大规模项目而设计。它支持开发者在本地仓库中独立完成开发任务,并通过远程仓库实现代码的共享和合并[^1]。 #### 二. 功能分支工作流 (Feature Branch Workflow) 功能分支工作流是一种常见的多人协作方式。在这种模式下,每个新功能都应在单独的功能分支上开发。以下是具体的操作流程: 1. **创建功能分支** 基于`master`或其他稳定分支创建新的功能分支。例如: ```bash git checkout -b feature-xyz ``` 创建前应确保当前分支是最新的状态,可以通过以下命令同步最新的`master`分支: ```bash git checkout master git pull origin master ``` 2. **提交更改** 在功能分支上进行开发并定期提交更改: ```bash git add . git commit -m "Add new functionality" ``` 3. **推送至远程仓库** 将功能分支推送到远程仓库以便其他团队成员查看或测试: ```bash git push origin feature-xyz ``` 4. **解决冲突** 如果在推送过程中遇到冲突,需先拉取远程分支并与本地分支合并: ```bash git pull --rebase origin feature-xyz ``` 若存在冲突,则手动解决后继续提交。 5. **合并回主分支** 当功能开发完成后,将其合并到`master`或`dev`分支。通常会发起Pull Request(PR),由团队负责审核后再执行合并操作[^2]。 #### 三. 同一分支下的多人协作 在同一分支下进行多人协作时,可能会频繁发生冲突。为了避免这种情况,建议遵循以下步骤: 1. 定期从远程分支获取最新改动以减少冲突的可能性: ```bash git pull origin branch-name ``` 2. 如果发现冲突,按照提示逐一解决问题文件中的标记部分(`<<<<<<<`, `=======`, `>>>>>>>`),保存修改后的文件,随后重新提交: ```bash git add conflicted-file.txt git commit -m "Resolve conflict in file" ``` 3. 成功解决所有冲突后再次尝试推送自己的变更: ```bash git push origin branch-name ``` #### 四. 不同分支间的多人协作个开发者分别负责不同模块时,推荐采用分支隔离策略来降低干扰风险。例如: 1. 开发者A基于`master`创建名为`feature-a`的新分支; 2. 开发者B同样基于`master`创建另一个分支`feature-b`; 3. 只有当各自的任务完成后才会将这些分支合并回到主线。 为了保证数据一致性,在切换分支之前务必确认基础分支已更新至最新版[^3]: ```bash git checkout master git pull origin master ``` #### 五. 主干分支保护机制 对于重要的生产环境分支(如`main`/`master`),应当启用严格的权限管理和自动化测试工具链。只有经过充分验证的PR才能被批准合入其中[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值