Git知识总结

200 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

主要将本文分为两个部分,一是git的基础知识,二是git较难的部分-分支管理的知识

基础知识

  1. 初始化一个Git仓库,使用git init命令。
  2. 添加文件到Git仓库,分两步:
  • 使用命令git add <file>,注意,可反复多次使用,添加多个文件;
  • 使用命令git commit -m <message>,完成。
  1. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
  2. 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
  3. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
  4. 要随时掌握工作区的状态,使用git status命令。
  5. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
  6. 转存失败重新上传取消
  7. 这里删除的是文件区的文件
$ rm test.txt

 这里删除的是版本库的文件

$ git rm test.txt
rm 'test.txt'

$ git commit -m "remove test.txt"

  • git log 可以查询修改记录   如果嫌输出信息太多,

    $ git log --pretty=oneline
    

看得眼花缭乱的,可以试试加上--pretty=oneline

  • $ git reset --hard HEAD^
    

    上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

  • 最新的那个版本已经看不到了,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个你要的版本commit id1094adb...,于是就可以指定回到未来的某个版本:

$ git reset --hard 1094a

  • 在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到老版本版本时,再想恢复到新版本,就必须找老版本的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
  • git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支(个解:暂存区就是保留各种修改记录)

分支管理

分支管理

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>


解决冲突

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

git log --graph命令可以看到分支合并图。


修改bug

1.Git还提供了一个stash功能,可以把当前工作现场“储藏”起来

git stash

2.确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

git checkout master

git checkout -b xxx

3.修复bug

4.切换回主支线并合并

git checkout master

git merge --no-ff -m"注释"xxx(被合并分支)

5.回去分支工作

  1. git stash list  可以查看最初隐藏的工作现场

恢复:1。git stash list  回复后stash的内容并不会被删除  删除使用git stash drop

2.git stash pop 恢复时 stash的内容也会被删除

开发一个新feature,最好新建一个分支;

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。


多人协作

1.查看远程库:git remote

origin/git remote -v(详细版本)

2.推送分支:git push origin xxx

3.提交冲突时,用git pull把最新提交抓下来,解决冲突再推送

4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功

5.如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>


Rebase

暂时没学透彻


分支

  • 命令git push origin <tagname>可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d <tagname>可以删除一个本地标签;
  • 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。