Git学习

基本命令:

git add file
git commit -m "描述"

1、当commit到版本库之后,想要回退到修改前:

1)查看历史记录:

git log

--pretty=oneline 可以加上该参数简略输出

查看历史命令:

git reflog

2)回退到上一个版本:

git reset --hard HEAD^

HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,往上100个版本写成HEAD~100

2、管理、查看修改

查看工作区和版本库里最新提交的版本的差别:

git diff HEAD -- 文件

注意每次修改文件后,都需要git add到暂存区,commit提交时才是修改后的文件

或者等所有修改完再git add和commit

3、撤销修改

1)当把一个文件git add之后,在工作区再修改文件(这里修改之后有是否再次add的两种情况),想要撤销修改:

git checkout -- readme.txt

readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

2)命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区:

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

4、删除文件

git rm

这里有点迷糊,暂时搁置

5、

查看远程库信息:

git remote
git remote -v

推送分支

git push 远程仓库名 本地分支名

添加远程仓库

git remote add origin git@github.com:用户名/仓库名.git #ssh

git remote add origin1 https://www.github.com/用户名/仓库名.git #https

删除远程仓库:

git remote rm 远程仓库名

推送本地库的所有内容到远程库:

git push -u origin master

或者

echo "# test" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/zwshi/test.git
git push -u origin master
                

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

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

6、分支

查看分支:git branch
git branch命令会列出所有分支,当前分支前面会标一个*号
创建分支:git branch <name>
切换分支:git checkout <name>或者git switch <name>
创建+切换分支:git checkout -b <name>或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息
git merge --no-ff -m "merge with no-ff" dev
查看合并历史
git log --graph --pretty=oneline --abbrev-commit

7、bug分支

保存现场
git stash
确定在那个分支进行修复bug(这里在one)
git checkout -b one
创建修复bug分支
git branch issue01
git checkout -b issue01
修复完成后切换到one分支,合并并删除issue01分支
git checkout one
git merge --no-ff -m "merge bug fix 01" issue01

切换为master分支
git checkout -b master
git staus
git stash list
恢复现场
git stash pop

在另一个分支修复同样的bug
同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。
注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。
为了方便操作,Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支:

$ git branch
* dev
  master
$ git cherry-pick 4c805e2
posted @ 2020-08-04 16:50  zw1sh  阅读(87)  评论(0编辑  收藏  举报