使用Git工作的一般流程

 

来源:https://blog.csdn.net/eeeeasy/article/details/80783866

目录

使用Git工作的一般流程

获得一个Git管理的工作区

自己初始化一个仓库

从远程仓库获得工作目录

添加,修改,推送

分支

拉取别人的提交

处理冲突


 

获得一个Git管理的工作区

使用Git开始工作,首先需要一个Git管理的工作区,这个工作去可以是自己init创建的,也可以是从远程仓库clone下来的。

自己初始化一个仓库

 
  1. ## 新建一个目录作为工作目录

  2. $ mkdir git_demo

  3. $ cd git_demo

  4. ## 在本地初始化git仓库

  5. $ git init

  •  

这时,我们已经创建了一个本地仓库,但是,一般我们和其他人共同开发一个项目,则需要添加一个远程仓库。现在假设我已经才github上面建立了一个叫做git_demo的空仓库,现在需要将其添加到本地仓库。

 
  1. ## 添加一个叫origin的远程仓库

  2. $ git remote add origin git@github.com:JavyZheng/git_demo.git

  3. ## 添加个README吧

  4. $ vim README.md

  5. $ git add README.md

  6. $ git commit -m "first commit with README"

  7. ## 推送到远程仓库

  8. $ git push -u origin master

  •  

到这里,就创建了一个可以推送到远程的git仓库。

从远程仓库获得工作目录

大多数时候,我们没有机会从头init的仓库,而是远程仓库已经存在,我们要参与到项目中,这时只需要将远程仓库clone下来就好。

 
  1. ## 把刚刚推送上去的仓库clone下来

  2. $ git clone git@github.com:JavyZheng/git_demo.git

  3. $ cd git_demo

  4. $ git status

  5. ## 默认远程仓库名为origin

  6. On branch master

  7. Your branch is up-to-date with 'origin/master'.

  8. nothing to commit, working directory clean

  •  

添加,修改,推送

不管是自己重新创建还是从远程仓库clone,我们现在得到了一个可以开展工作的工作区,这个工作区被git仓库所管理。

进行一些修改后,可以通过add, commit, push来推送到远程仓库

 
  1. ## 添加所有修改

  2. $ git add .

  3. ## 提交修改

  4. $ git commit -m "add some files"

  5. ## 推送到远程仓库

  6. $ git push

  •  

分支

通常情况下,当我们需要添加一个新功能的时候,是不能在主分支上直接修改的,这时,需要创建一个新的分支,等功能开发并测试完成之后,再合并到主分支。

假设我们需要新建一个临时分支iss1来处理一个问题。

 
  1. ## 新建一个iss1分支

  2. $ git branch iss1

  3. ## 切换到iss1分支

  4. $ git checkout iss1

  5. Switched to branch 'iss1'

  6. ## 查看分支,当前已经在iss1分支上面

  7. $ git branch

  8. * iss1

  9. master

  10. ## 在当前分支上进行一些修改

  11. $ echo "file3" >> file3

  12. ## 添加并提交修改到本地

  13. $ git add file3

  14. $ git commit -m "add file3"

  15. ## 推送到远程,因为现在远程还没有iss1分支,所以需要set-upstream

  16. ## 这样,在远程仓库就有了iss1分支,之后可以直接push

  17. $ git push --set-upstream origin iss1

  18.  
  19. ## iss1解决后,把修改合并会master,并删除iss1分支

  20. $ git checkout master

  21. $ git merge iss1

  22. $ git branch -d iss1

  23. $ git push

  24. ## 删除远程分支

  25. $ git push origin :iss1

  26. To git@github.com:JavyZheng/git_demo.git

  27. - [deleted] iss1

  •  

拉取别人的提交

在我们完成了某项功能的修改,需要push的远程的时候,协作者可能已经提交了他们的修改,这时,我们需要先把最新的提交拉取下来,加入我们的修改,再重新提交上去。

 
  1. $ git push

  2. ## push被驳回了,因为有其他人已经提交了更新

  3. ! [rejected] master -> master (fetch first)

  4. error: failed to push some refs to 'git@github.com:JavyZheng/git_demo.git'

  5. hint: Updates were rejected because the remote contains work that you do

  6. hint: not have locally. This is usually caused by another repository pushing

  7. hint: to the same ref. You may want to first integrate the remote changes

  8. hint: (e.g., 'git pull ...') before pushing again.

  9. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

  10.  
  11. ## 拉取远程提交内容并合并到当前工作区

  12. $ git pull

  13. ## 重新push到远程

  14. $ git push

  •  

处理冲突

当拉取协作者的提交时,很可能不同开发者修改了同一个文件的同一部分,这时候,就会出现冲突,我们需要手动解决这些冲突,再重新提交上去。

 
  1. $ git pull

  2. remote: Counting objects: 5, done.

  3. remote: Compressing objects: 100% (2/2), done.

  4. remote: Total 5 (delta 2), reused 5 (delta 2), pack-reused 0

  5. Unpacking objects: 100% (5/5), done.

  6. From github.com:JavyZheng/git_demo

  7. 7d4f14a..e2e17d3 master -> origin/master

  8. ## 尝试自动合并file1

  9. Auto-merging file1

  10. ## 发现冲突,需要手动解决冲突

  11. CONFLICT (content): Merge conflict in file1

  12. Automatic merge failed; fix conflicts and then commit the result.

  13.  
  14. ## 此时,git已经把可能冲突的地方都写进了文件

  15. $ vim file1

  16. ## 可以看见冲突的地方

  17. <<<<<<< HEAD

  18. file1 + add 1

  19. =======

  20. file1 + del 4

  21. >>>>>>> e2e17d311ec33700e94ce5dd694aa340920deb7c

  22.  
  23. ## vim里手动解决冲突后,add进来

  24. $ git add file1

  25. $ git commit -m "resolve confict in file1"

  26. ## 推送到远程分支

  27.  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值