git使用小技巧

1、提交与标签

1、已准备了本地仓库gitTraining,并在master分支进行了三次提交:

第一次提交:添加了helloGit1;
第二次提交:添加了helloGit2;
第三次提交:添加了helloGit3。
现在发现,helloGit3内容有错误,需要撤销第三次提交,即将HEAD指向第二次提交。

cd gitTraining
git revert HEAD

2、已准备了本地仓库gitTraining,并在master分支进行了三次提交:

第一次提交:添加了helloGit1;
第二次提交:添加了helloGit2;
第三次提交:添加了helloGit3。
现在发现,helloGit3、helloGit2内容均有错误,需要撤销第三次、第二次提交。即将HEAD指向第一次提交。
需要选择–hard模式。

#进入gitTraining
cd gitTraining

#请在下方Begin至End星号线内填写git命令以回到第一次提交的版本
#********** Begin **********#
git reset --hard HEAD^^

#********** End **********#

3、如果只是工作区有了修改,则可以直接使用git checkout进行撤销,具体操作如下:

git checkout -- hello

通过这种方式,就可将hello文件自上个commit之后,尚未add进暂存区的修改丢弃。

4、已有本地仓库,错误地add了helloGit,但是要保存在工作区,即只从版本库中去除

#进入gitTraining
cd gitTraining

#请在下方Begin至End星号线内填写git命令以丢弃helloGit的修改
#********** Begin **********#
git rm --cached helloGit
git commit -m "删除helloGit"  

#********** End **********#

5、在commit之后,可以为最近一次提交打上标签

#请在下面的Bein/End星号线内填写Git命令为最近一次提交打上标签v1.0
#********** Begin **********#
git tag v1.0
#********** End **********#

6、标签的推送
推送指定标签
推送指定标签到远程仓库的Git命令如下:

git push 远程主机名 tag名  

其中,远程主机名为远程Git版本库对应的主机名,tag名为准备推送的标签名。

该命令使用示例如下:

git push origin v1.0  

该语句表示将v1.0标签,推送到主机名为origin对应的远程仓库。

推送全部标签
推送指定标签需要用到:

git push 远程主机名 --tags

其使用方法如下:

git push origin --tags

其中origin为远程主机名,这样就能将全部标签推送至远程仓库。

8、删除标签
删除本地标签,需要用到的命令格式为:

git tag -d 标签名

具体使用方法示例如下:

git tag -d v1.0 

2、解决冲突

树冲突
方法文件名修改造成的冲突,称为树冲突。比如,A用户把文件C改名为A,B用户把文件C改名为B,那么B合并这两个提交时,就会出现冲突:

CONFLICT (rename/rename): Rename “C”->“B” in branch “HEAD” rename
Automatic merge failed; fix conflicts and then commit the result.
此时如果使用git status查看版本库的状态,会得到如下提示信息:

You have unmerged paths.
(fix conflicts and run “git commit”)
(use “git merge --abort” to abort the merge)
Unmerged paths:
(use “git add/rm …” as appropriate to mark resolution)
added by them: A
added by us: B
both deleted: C
no changes added to commit (use “git add” and/or “git commit -a”)
树冲突产生的原因是,我们将同一文件名,在不同操作中,修改为不同的名字。

解决冲突
内容冲突
当产生内容冲突时,如果你打开冲突发生的文件,你会在冲突区域发现类似于下面的内容:

<<<<<<< HEAD  
Learning English is easy or simple  
=======  
Learning English is easy & simple  
>>>>>>> develop  

这个就是我们上面所举的内容冲突的例子,冲突文件的内容。从中可以看到<<<<<<< HEAD与=======包括的是我们当前分支的内容,而=======和>>>>>>> develop之间的则是需要合并过来的内容,为了解决冲突我们可以手动解决这些冲突,也可以使用图形化工具帮助解决。如果以手动方式解决,我们可以编辑冲突区域内容为我们想要的内容,比如将其修改成如下内容:

Learning English is easy and simple  

然后再执行git add和git commit操作提交,这样就能将冲突解决了。
即解决冲突的一般过程为:

手动编辑冲突区域;
执行git add,将编辑提交到暂存区;
执行git commit,将编辑提交到本地仓库以解决冲突。
树冲突
解决树冲突时,对于上面示例中的树冲突,如果最终决定采用文件B,我们可以采用如下方式解决:

git rm A  
git rm C  
git add B  
git commit  

即从本地仓库中删除A和C文件,然后再添加B文件并最终提交。

强制推送

git push 远程主机名 本地分支名:远程分支名 -f  

始终牢记:先本后远,本立而道生

3、gitignore

在这个文件里写入一些需要不提交的文件。

# 忽略指定文件  
HelloWrold.class
# 忽略指定文件夹  
bin/  
bin/gen/
# 忽略.class的所有文件  
*.class
# 忽略名称中末尾为ignore的文件夹  
*ignore/
# 忽略名称中间包含ignore的文件夹  
*ignore*/  

4、合并分支

具体的,以将远程develop分支合并到远程master分支为例,操作过程如下:

获取远程develop分支到本地分支(如develop分支)。如果本地已经有分支对应远程develop分支,则可以直接在该分支上执行pull操作或者fetch/merge操作,以获取远程最新内容。否则,可以新建分支跟踪远程develop分支,并获取最新内容到本地;

切换到master分支,并获取远程master分支的最新内容到本地;

将本地develop分支合并到本地master分支;

将本地master分支推送到远程master分支。

以合并远程develop分支到远程master分支为例,其具体操作步骤如下:

#切换到develop分支  
git checkout develop
#获取远程develop分支的内容到本地  
git pull origin develop:develop
#切换到master分支  
git checkout master
#拉取远程master分支内容到本地  
git pull origin master
#合并本地develop分支到master分支  
git merge develop
#将合并后的分支推送到远程master分支  
git push origin master:master  

5、简单的rebase操作

本地版本库gitTraining,并创建了两个分支master和develop,且当前处于develop分支。并且,develop分支是从master分支,checkout出去的分支。
将develop变基到master分支。

#进入本地gitTraining版本库
cd gitTraining

#请在下方Begin/End星号线内填写Git命令以完成rebase操作
#********** Begin **********#
git rebase master develop
#********** End **********#

6、完整demo:搭建一个自己的git工作区

#配置Git
git config --global user.email "you@example.com"
git config --global user.name "Your Name"

#进入/tmp目录
cd /tmp

#请在下方Begin/End星号线内填写git命令以初始化educoder.git仓库
#********** Begin **********#
git init --bare educoder.git  
#********** End **********#

#设置别名
#请在下方Begin/End星号线内填写git命令为系统设置全局别名
#********** Begin **********#
$ git config --global alias.st status  
#为checkout设置别名co  
$ git config --global alias.co checkout  
#为commit设置别名ci  
$ git config --global alias.ci commit  
#为branch设置别名br  
$ git config --global alias.br branch 
删除所有别名:
删除所有别名用到的命令为:  

git config [--global] --remove-section alias  
其中,--global是可选参数,加上这个参数也将本主机所有git仓库下的别名都删除,不加这个参数则仅删除本仓库下的别名。  

删除指定别名:  

git config [--global] --unset alias.你的别名  
同样的,--global也是一个全局参数。如果要删除本主机所有仓库下的st别名,则可以执行以下命令:  

git config --global --unset alias.st  
查看别名:
如果要查看当前主机已经设置了哪些别名,则可以执行以下命令:  

git config --list | grep alias  
会得到类似于alias.st=status的信息,这就是说系统当前已经为status设置了别名st。

#********** End **********#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

irrationality

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值