【Git】常用命令commit提交,push推送,merge,添加分支branch

一、常用操作:
1.添加跟踪文件
git add .
或
git add -A


根据ignore的配置,添加跟踪文件,其中的.或-A表示添加所有更改过的文件。

2.查看状态
git status

3.提交到本地:
git commit -m "说明"

引号内为本次提交的说明文字。如果说明文字很长需要换行,则用单引号来换行,如:
git commit -m '
第一行
第二行
'


(注意开始和结束时的两个单引号)

4.推送到默认分支
git push

如果当前分支是master则自动推送到maser分支。如果是远程分支的话,此时github服务器上才是会被真正的改变。

5.从远程分支合并到本地
git pull

当合并完后,如果提示有冲突,则输入

mergetool beyondmerge

进行冲突处理,然后在push上去。

6. .gitignore修改之后,清除缓存,使之重新生效,注意前两行后面的小数点。
方式一:
git rm -r --cached .
git add .
git commit -m "xxxx"
方式二:手动添加某个文件
git add -f xxx\sss.txt

7.彻底回退到某个commit

先使用以下命令查看想回退到的commit的id是多少,id就是一串长长的数字。

git log

然后使用:(注意命令中的两个“-”)以下命令,彻底回退到这个commitid上。

git reset --hard <commit_id>

如果想清空这个commitid之后所有已经提交了的commit,则继续执行以下命令:

git push origin HEAD --force             注意是两个横杠

8、剔除某次提交(删除某次提交)

使用命令:git revert <commit-id>,网上说的rebase、reset之类的都不对,正确的应该是用revert。

使用情景:已经有了多次commit(merge也属于commit),但是后悔了,想把其中某次commit删除掉,而其后的commit不想收到影响。

操作:

(1)如果要删除的这次commit属于merge分支产生的commit,那么这个commitId会有两个父commitId分属于merge前的两个分支的两次提交。如图(Bitbucket):

此时输入 

git revert aacd8c89 -m 1


就删除了aacd8c89这次提交,并将主线设置到了798a4415这次提交上,然后解决完冲突push上去就行了。

如果输入

git revert aacd8c89 -m 2


就会将主线设置到8bd22080这次提交上,然后解决完冲突push上去就行了。

(2)如果要删除的这次commit不是有merge分支产生的,那就直接输入一下命令删除本地commit就行了。

git revert <commit-id>

9. 添加submodule(子模块)

假如又以下的实际场景:某个工作中的项目需要包含并使用另一个项目。 现在问题来了:你想要把它们当做两个独立的仓库,同时又想在一个项目中使用另 一个。

Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一 个仓库克隆到自己的项目中,同时还保持提交的独立。

9.1 在已经项目(父仓库)中添加子模块
git submodule add https://github.com/xxx/abc.git


此时在当前文件夹下就创建了一个名为abc的文件夹,此文件夹里就是abc.git这个仓库里的所有文件。

9.2 clone父仓库的代码

由于父仓库里现在已经添加了子模块,所以不能像之前简单clone的方式来操作了,需要添加几个参数:

git clone --recurse-submodules


这样clone时就会连同子模块一起clone下来,不管父仓库里有多少submodule,不管submodule里还有没有submodule,都会被clone下来。

如果clone时忘记了添加了--recurse-submodules参数,或者另外一位同事需要获取你配置的子模块,则执行以下命令即可:

git submodule update --init --recursive

10. 修改commit信息
git commit --amend
或
git commit --amend -m 'new commit message'
(适用于,修改最近一次的commit的commit message)

修改历史commit信息,参考:https://blog.csdn.net/Muscleape/article/details/105637401

11. 将多个commit合并为1个(合并commit)
 

这里就以sourcetree的操作举例:

 假如我们需要将BCD三次提交合并为一次提交,其操作步骤如下:

首先,在A提交上右键,选择“【Rebase children of xxx interactively】”,如下图:

 然后,选中第一项即D提交,然后一直点击【Squash with previous】,如下图:

 点完之后如下图,可以看到3次提交被折叠到了一组,同时勾选上Amend Commit表示要修改commit 信息:

 然后点击上图【EditMessage】按钮,填写本次squash的信息,如下图:

 继续点击OK:

 此时我们会发现本地的test和origin/test位于不同的提交上,如下图:

此时,使用git push --force命令强制将本地推上去即可。推完之后如下图:

 完美合并。

12. rebase操作(变基)
 详见【Git】如何使用sourcetree进行rebase操作(变基)

13. 移除所有更改 (discard all changes)
 

git restore .

二、分支操作

1.查看所有分支
用命令:git branch -a
$ git branch -a
* gym
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/gym
  remotes/origin/master


结果里一共5个分支,带remotes的是远程分支,不带的是本地分支。前面带*号的表现当前所处的分支。

master就是主分支,当你从github上clone下之后,默认就是clone的主分支(master)。那么那个origin是什么意思呢?你可以把他理解为你仓库的网址,如:https://www.xxxx.com/123.git。

2.创建新分支
命令:git branch test。将会创建一个名为test的新分支

然后再次查看所有分支:

git branch -a
* gym
  master
  test
  remotes/origin/HEAD -> origin/master
  remotes/origin/gym
  remotes/origin/master


可以看到已经有了新分支test。

接下来再把新分支推送到远程分支(github仓库上):

$ git push origin test 


然后再查看所有分支:

$ git branch -a
* gym
  master
  test
  remotes/origin/HEAD -> origin/master
  remotes/origin/gym
  remotes/origin/master
  remotes/origin/test


可以看到remotes中又多了一个远程test分支。

3.切换分支
$ git checkout test

 
然后再次查看所有分支,你就会 发现这次*号在test分支上面。

如果以后在push,pull的时候就想用这个分支了,不用master分支了,就继续输入:

$ git push --set-upstream origin test


将pull push等操作的默认分支设为test,否则以后pull push的时候每次都要指定哪个分支。

4.删除本地分支test
$ git branch -d test
已删除分支 test(曾为 eef866f)。
再次查看所有分支:

$ git branch -a
* gym
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/gym
  remotes/origin/master
  remotes/origin/test


发现本地test分支已经没有了。

5.删除远程分支


删除完本地,就应该删除远程了。输入以下命令:

$ git branch -r -d origin/test
已删除远程分支 origin/test(曾为 eef866f)。
然后在输入:

$ git push origin --delete test


才是真正的删除远程分支。

6.合并分支


如果我们想把test分支合并到master分支中,该怎么弄呢?

首先先切换到master分支,然后执行git merge test


7.冲突合并
 
git mergetool
然后输入:

beyond compare

3. 仓库操作
3.1 清理旧的提交,释放git仓库空间
git checkout --orphan tmpmaster         //创建临时分支tmpmaster
git add .                               //添加要跟踪的文件
git commit -m "clean branch master"     //提交
git branch -D master                    //删除本地的master分支
git branch -m master                    //把当前分支重命名为master
git push -f origin master               //用本地的master覆盖远端的master

写在最后:如果大家实在记不住这些复杂的命令,推荐使用SourceTree这个可视化工具,绝对好用。

                        
原文链接:https://blog.csdn.net/catshitone/article/details/54973968
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值