初始化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
2
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
2
3
4
5
6
7
<<<<<<< HEAD:index.html
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
please contact us at support@github.com
</div>
>>>>>>> iss53:index.html

这表示 HEAD 所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 iss53 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。 例如,你可以通过把这段内容换成下面的样子来解决冲突:

1
2
3
<div id="footer">
please contact us at email.support@github.com
</div>

上述的冲突解决方案仅保留了其中一个分支的修改,并且 <<<<<<< , ======= , 和 >>>>>>> 这些行被完全删除了。 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。 一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。

如果你对结果感到满意,并且确定之前有冲突的的文件都已经暂存了,这时你可以输入 git commit 来完成合并提交。 默认情况下提交信息看起来像下面这个样子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Merge branch 'iss53'

Conflicts:
index.html
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
# .git/MERGE_HEAD
# and try again.


# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# All conflicts fixed but you are still merging.
#
# Changes to be committed:
# modified: index.html
#

变基

提取在 C4 中引入的补丁和修改,然后在 C3 的基础上应用一次。 在 Git 中,这种操作就叫做 变基(rebase)你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。

关于撤销操作
如果我们在提交之后突然发现少提交的了一些东西,或者想修改提交信息,我们可以使用 带< —amend > 参数的commit重复提交

1
2
3
git commit -m "You Commit Message"
git add xxxxx
git commit --amend

最终你只会有一个提交——第二次提交将代替第一次提交的结果。

取消暂存区文件

1
git reset <file name 如果指定文件 则指定取消暂存文件,否则取消当前分支的全部文件暂存>

撤销对文件的修改
其实< git status 告诉了我们可能使用什么命令>

1
git checkout -- files/file name

标签
有时候我们需要给某个版本打上特定的标记/标签,我们可以使用

1
git tag tag-name

推送标签

1
git push --tags