GitGit使用Git

Git 学习

2019-08-25  本文已影响0人  墨罚

一、基本操作

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   demo.txt

no changes added to commit (use "git add" and/or "git commit -a")

二、远程仓库

添加远程仓库
从远程库克隆
  git clone 远程仓库的URL  
  //这样本地仓库就已经将远程仓库项目克隆下来了。

三、分支管理

  因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

    git branch 分支
    git checkout 分支

修改dev分支后

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)
//修改分支后,从分支切换到master时,Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

如果此时再修改master分支内容,合并时会提示冲突

$ git merge feature1
Auto-merging demo.txt
CONFLICT (content): Merge conflict in demo.txt
Automatic merge failed; fix conflicts and then commit the result.
//Git告诉我们,demo.txt文件存在冲突,必须手动解决冲突后再提交。

git status也可以告诉我们冲突的文件
在文件内容中Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
将冲突的内容统一,解决冲突内容后重新提交即可。

分支管理策略

  通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

BUG分支

  软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
  当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,当前正在dev上进行的工作还没有提交。
  并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?
  幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等修改BUG以后恢复现场继续工作:

Feature分支

  软件开发中,总有无穷无尽的新的功能要不断添加进来。
  添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。
  如果在feature分支还没有合并前,需要取消这个功能,删除时会销毁失败,需要使用大写的-D参数强制删除。
   git branch -D 分支

多人协作

  当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。

//git pull 失败
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> dev
//原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接
  1. pull远程库内容到本地先进行合并
  2. 如合并冲突,则解决冲突
  3. 如没有冲突或解决后,再commit 并push到远程库
上一篇 下一篇

猜你喜欢

热点阅读