Git常用命令

参与组内的自动化平台编码时,开始接触到git的使用(以前自己也把代码提交到github,但都是用gui)。

总结了一些平时会用到的命令,随时补充。

 

概念

当前版本叫HEAD。当前分支的上一个版本叫HEAD^, 上上个版本叫HEAD^^,上一百个版本叫HEAD~100

 

本地代码管理

版本回退

git reset --hard HEAD^

版本前进到某个回退前,在当前版本之后的版本

git reset --hard commitId

 

查看版本记录

git reflog

 

把文件在工作区的修改撤销。回到最近一次commit或add时的状态

git checkout -- fileName

 

add之后撤销暂存区的修改(unstage)

git reset HEAD fileName

 

创建本地分支并打开  git checkout -b 分支名

强制删除本地分支(使用此命令时,必须没有在checkout这个分支)  git branch -D 分支名

 

查看commit历史  git log

取消代码修改,抹掉所有修改记录   git reset --hard HEAD

查看具体变更内容  git diff 文件名

 

远程仓库

存在本地库,关联远程仓库

git remote add origin xxx.git

 

远程库为空时,第一次push。以后push都可以去掉-u的参数。

git push -u origin master

 

本地库不存在,可以从远程仓库clone

git clone xxx.git

 

分支管理

切分支后合并分支

checkout了哪个分支,执行merge命令时就以谁为主。

假设dev的版本是比master新的版本,以下命令,如果当前checkout的是master,那就是把dev的内容合并到master上

实质上只是把指在master上的head指针指向了dev。这种属于fast-forward合并

git merge dev

 

可以通过加--no-ff参数的方式禁用fast-forward模式,这样每一次merge都会创建一个新的commit

git merge --no-ff -m "xxxx"

 

解决冲突

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

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

 

Bug分支

当前有一些暂时无法完成的任务,但需要紧急先切一个分支解决问题再继续的时候

可以储存现场,留作以后使用

git stash

 

储存后,git status可以看到工作区没有任何文件。

然后正常在master切新的分支,完成bug修复工作后commit,然后切换到master再把这个临时分支合并进来

 

用git stash list查看存起来的工作现场。

要恢复有两种方法:

git stash apply(这种方法stash起来的内容不会删除,如果需要删除需要用命令git stash drop)

git stash pop(这种方法不保留stash的内容,取出来stash的东西就没了)

 

多人协作

本地仓库默认叫master

远程仓库默认叫origin

 

查看远程库的命令。带上-v这个参数可以查看更详细的信息

git remote

git remote -v

 

推送xxxx

git push origin xxxx

 

开始一个项目的例子

# 先拷贝项目到本地。此时本地只有一个master分支

git clone xxx.git

# 查看分支

git branch

# 创建远程的origin的dev分支到本地

git checkout -b dev origin/dev

# 开始在dev上工作,需要时推送到远端

git add .

git commit -m "xxx"

git push origin dev

 

解决冲突

# 先把最新提交从origin/dev抓下来

git pull

# 如果是因为没有指定本地dev和origin/dev分支的链接而失败,就先设置链接

git branch --set-upstream-to=origin/dev dev

# 然后重新pull

git pull

# 代码冲突解决之后,重新commit即可。

 

rebase

 

待续

 

 

常用步骤

开发完自己的部分后,先本地把变更commit一下
git add .
git status
git commit -m “备注”
 
切到本地master分支,然后拉取线上最新代码。永远保持本地master为最新
git checkout master
git fetch origin master
 
然后把head切到这个最新的本地master
git reset —hard origin/master
 
之后把这个最新的本地master合并到自己的分支yyy里
git checkout yyy
git merge yyy master
posted @ 2019-03-31 12:13  乌火寒客  阅读(118)  评论(0编辑  收藏  举报