git 日常操作命令记录

sancaiodm Git与Repo 2021-09-13 1458 0

git config --global --edit    配置git用户信息




git branch -d dev                 //删除本地分支

git branch -D dev                //强制删除本地分支

git push origin --delete  remotebranch     //删除远程分支

git branch master2 master  //从主分支master创建master2分支

git checkout -b dev             //从当前分支创建新的分支,参数: -b 允许省略,

git checkout -b branchname commitId      //根据指定版本号创建分支

git branch -m branch_old branch_new 将branch_old重命名为branch_new

如果要在指向任何分支时重命名分支,请执行以下操作:

git branch -m <oldname> <newname>

如果要重命名当前分支,可以执行以下操作:

git branch -m <newname>

git checkout -b local_dev origin/remote_dev 创建一个与远程remote分支关联的本地local_dev分支

git checkout --track origin/branch_name  创建一个与远程分支关联且同名本地分支

git branch --set-upstream-to=origin/remote_dev local_dev

git branch --set-upstream local_dev  origin/remote_dev

作用:追踪远程分支origin/remote_dev关联到本地分支local_dev,



git pull   命令相关

git pull   <远程主机名> <远程分支名>:<本地分支名>

将远程主机 origin 的 master 分支拉取过来,与本地的 local_dev分支合并。

git pull origin master : local_dev

如果要将当前分支与远程branchname分支合并,则冒号后面的部分可以省略。

git pull origin branchname

如果当前分支已与一远程分支存在追踪关系,

git pull origin 

如果当前分支只有一个追踪关系分支

git pull    

git pull --rebase      //当前分支自动与唯一一个追踪分支进行合并



git push  命令相关

git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:

git push <远程主机名> <本地分支名>

以下命令将本地的 master 分支推送到 origin 主机的 master 分支。

git push origin master

相等于:

git push origin master:master

git push origin test:master         // 提交本地test分支作为远程主机名test的master分支
git push origin test:test              // 提交本地test分支作为远程主机名test的test分支

git push origin HEAD:remotebranch   //将本地分支提交到remotebranch分支,若无则新创建名为remotebranch的远程分支

git push -f origin local_dev:remote_dev      //将本地分支local_dev强制推送到分支remote_dev分支

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略。如下所示将当前分支推送到origin主机的对应分支。

$ git push origin

如果当前分支只有一个追踪分支,那么主机名都可以省略。

$ git push

如果本地分支与远程分支没有关联

git push --set-upstream origin dev

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

git push --force origin master

删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:

git push origin --delete master


[1]当前分支未关联任何远程分支 git push

$:  git push
fatal: The current branch xxxx has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin xxxx

如上,如果当前分支未关联任何远程分支,直接git push会提示执行异常

解决方案:
(1)直接 git push origin xxxx推向制定的分支,最强暴的方法。
(2)正如上面所说关联远程分支:git push --set-upstream origin xxxx

git push 使用--set-upstream 等价与使用 -u

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样以后就可以不加任何参数使用git push。

git push -u origin dev 与  git push --set-upstream origin dev     //作用相同

分解:

1.推送本地分支dev到远程主机origin的dev分支

2.并追踪远程分支dev,远程没有dev就自动创建一个dev

[2]当前分支关联了一个远程分支但它俩名字不同执行:git push

fatal: The upstream branch of your current branch does not match

the name of your current branch. To push to the upstream branch on the remote use:

    git push origin HEAD:remotebranch       //push名字不同但已关联的且存在的远程分支,

To push to the branch of the same name on the remote,use

   git push origin local_dev        //push到同名的远程分支,没有则会创建一个同名字远程分支

......


$: git branch -d branchname

error:The branch 'branchname' is not fully merged

IF you are sure you want to delete it,run "git branch -D branchname"

这此提示就是说要删除的本地分支branchname 包含了还未合并的工作,建议用:git branch -D branchname


git patch相关命令:

通过git diff 命令生成patch文件

1.还未提交的修改 命令 :git diff > commit.patch

2.已提交的修改,通过指定commit id来生成patch文件

先用git log命令查看commit id

commit a0e36d0b598596db49bbefd907f9bb3ff01a848d

Author: xx <xia.xx@xx.com>

Date:   Fri Aug 13 14:12:40 2021 +0800

    [xx][]

commit 35dee47094503a38e2b4e427f8163fa2957d4706

Author: xx <xia.xx@xx.com>

Date:   Fri Aug 13 14:09:45 2021 +0800

    [xx][源文件]

通过命令生成patch 命令 :git diff 35dee47094503a38e2b4e427f8163fa2957d4706  > commit.patch

3.已经add但是未commit的修改命令 :git diff --cached > commit.patch

4.检查patch是否可以应用命令 :git apply --check commit.patch

5 将patch合入本地(不直接提交): patch -p1 < commit.patch

6.查看patch文件 命令 :cat commit.patch

7.应用补丁文件 命令 :git apply commit.patch


【gerrit】git push origin HEAD:refs/for/xxx  xxx:你的远程分支名

git push <remote 名字> <本地分支的名字> : <远程库的名字>

git push origin HEAD:refs/for/xxx

git push 推送

origin : 是远程的库的名字

xxx:就是填你的分支名

HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针,可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支

refs/for :意义在于我们提交代码到服务器之后是需要经过code review 之后才能进行merge的

refs/heads 不需要

这个不是git的规则,而是gerrit的规则


清理远程实际已删除但本地查看时仍显示存在的远程分支

git fetch --prune origin

或者 git fetch -p

或者 git pull -p


评论