Git小知识
初始化git仓库
1 | git init |
已经有远程仓库,想要clone到本地
lone 的仓库不需要进行上下游链接
1 | git clone <Repository_link> |
不clone 链接远程仓库
1 | git remote add <Repository_link> |
创建分支
1 | git branch <branch name> |
切换分支
1 | git checkout <branch name> |
删除本地分支 : 如分支名为dev
1 | git branch -D dev |
创建远程分支
1 | git push origin <branch Name> |
创建远程分支后要记得进行上下游链接
设置上游远程分支
方式一(适用远程分支已存在):
用参数 -u 或 —set-upstream-to 设置上游
1 | git branch --set-upstream-to=origin/<远程分支> <本地分支> |
方式二(适用远程分支不存在):
上传本地分支到远程,同是把上传后的远程分支设置为本地分支的上游分支:
1 | git push set-upstream origin HEAD:<远程分支> |
取消分支上游:
1 | git branch --unset-upstream |
删除远程分支
1 | git push origin -d dev |
查看上游:
可以通过git status 、 git checkout <分支>、git branch -vv命令查看
清理本地不存在的远程分支,如别人删除了dev,但是你本地查看还有,就可以执行该条命令
1 | git remote prune origin |
合并分支
1 | git merge [merge-Branch-Name] |
合并之后,我们应该就不再需要这个分支了,可以删除
合并冲突
如果git此时无法自动进行合并操作,我们可以在任意时刻使用git status命令查看那些因为包含合并冲突而处于未合并状态的文件
任何因包含合并冲突而有待解决的文件,都会以未合并状态标识出来。 Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。 出现冲突的文件会包含一些特殊区段,看起来像下面这个样子:
1 | <<<<<<< HEAD:index.html |
这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:
1 | <div id="footer"> |
上述的冲突解决方案仅保留了其中一个分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 这些行被完全删除了。 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。
如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。 默认情况下提交信息看起来像下面这个样子:
1 | Merge branch 'iss53' |
变基
提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。 在 Git 中,这种操作就叫做 变基(rebase)你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
关于撤销操作
如果我们在提交之后突然发现少提交的了一些东西,或者想修改提交信息,我们可以使用 带< —amend > 参数的commit重复提交
1 | git commit -m "You Commit Message" |
最终你只会有一个提交——第二次提交将代替第一次提交的结果。
取消暂存区文件
1 | git reset <file name 如果指定文件 则指定取消暂存文件,否则取消当前分支的全部文件暂存> |
撤销对文件的修改
其实< git status 告诉了我们可能使用什么命令>
1 | git checkout -- files/file name |
标签
有时候我们需要给某个版本打上特定的标记/标签,我们可以使用
1 | git tag tag-name |
推送标签
1 | git push --tags |