git 日常操作命令记录
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
评论