优秀文档
git 文档链接:
https://git-scm.com/book/zh/v1/Git-%E5%9F%BA%E7%A1%80
廖雪峰git教程 :https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/
常用方法
1、 查看状态
git status
2、还原未添加的文件
git checkout “”文件路径“”
3、添加文件
git add “”文件路径“”
4、上传文件
git commit -m "注释"
5、下载远程库
git pull origin dev
6、上传到远程库
git push origin dev
7、查看分支
git branch
附加: 查看远程分支
git branch -a
8、创建分支
git branch "分支名"
10、切换分支
git checkout "分支名“”
11、git branch -d "分支名"
功能:删除分支
附加 : 删除远程分支
在Git v1.7.0 之后,可以使用这种语法删除远程分支:
|
|
删除tag这么用:
|
|
否则,可以使用这种语法,推送一个空分支到远程分支,其实就相当于删除远程分支:
|
|
这是删除tag的方法,推送一个空tag到远程tag:
|
|
12、创建并切换分支
git checkout -b "分支名“”
13、合并分支
$ git merge dev
准备合并dev
分支,请注意--no-ff
参数,表示禁用Fast forward
:
$ git merge --no-ff -m "merge with no-ff" dev
14、在远程创建一个与本地branch_name 分支同名的分支并跟踪
git push --set-upstream origin branch_name 来利用
15、在本地创建一个与 branch_name 同名分支跟踪远程分支
git checkout --track orgin/branch_name 来。
16、重命名本地分支
git branch -m "last name" "name beforce"
遇到的问题
问题一、解决冲突
1.冲突的产生
当我们向远程Git服务器提交某一个文件的修改时,恰巧这个文件相同的修改地方其他人也有修改,并且已经提交到服务器,这时冲突就产生了. 通常,当我们合并两个相同的地方都有修改的分支时,都会产生冲突.
2.文本文件冲突解决
出现冲突时git不知道如何自动合并,需要我们解决冲突手动合并. 如果是文本文件,git会在有冲突的地方作上标记(如 HEAD >>> ==== <<< HASH_ID等),标记哪些是当前分支的修改,哪些是其他分支的修改.参考这些标记,解决冲突比较简单.
3.二进制文件冲突解决
如果二进制文件发生冲突,不方便查看git插入的冲突标记, 解决比较棘手,通常最简单的解决方法是提前沟通好,相同修改的地方二选一.
git checkout FILE --ours [ --theirs ]
–ours 表示检出当前分支,即保存当前分支的改动,丢弃另外分支的改动.
–theirs 表示检出另外分支, 即保存另外分支的改动,丢弃当前分支的改动.
举个栗子:
有分支A和B, 当前我们在分支A上, 需要把分支B合并到分支A, HashMap.c文件发生冲突了.
git checkout HashMap.c –ours 表示冲突的地方采用A分支上的修改,丢弃B分支上的修改.
git checkout HashMap.c –theirs 表示冲突的地方采用B分支上的修改,丢弃A分支上的修改.
解决完冲突后,就可以像往常一样 git add git commit了.
问题二、mklink 文件不能add的问题
git config core.symlinks true
问题三、
如何把本地新建分支同步到 git hub 上(该分支在远程没有)?又如何在本地把git hub 上新建分支同步到本地(本地没有该分支)
1:其实在从远程分支分出来的分支都是跟踪分支(track),当对该分支进行 push 和 pull 时,如果该分支和远程分支同名 git 会知道推送到远程哪个分支,从哪个远程分支同步到本地分支。其实每次克隆一个仓库时,本地都会新建一个 master 分支来track 远程的 origin/master。如果不同名,我们需要人为指定 git push origin branch_name
2:
如果本地新建了一个分支 branch_name,但是在
远程没有,这时候
push 和 pull 指令就
无法确定该跟踪谁,一般来说我们
都会使其跟踪远程同名分支,所以可以利用
git push --set-upstream origin branch_name ,这样就可以自动在远程创建一个
branch_name 分支,然后
本地分支会
track
该分支。后面再对该分支使用 push 和 pull 就
自动同步。无需再指定分支。
3:跟踪远程分支
1)如果
远程新建了一个分支,
本地没有该分支,可以利用
git checkout --track origin/branch_name ,这时本地会
新建一个
分支名叫
branch_name ,会
自动跟踪
远程的同名分支
branch_name。
从图中就可以看到本来远程有一个 test1 分支,本地没有,利用该指令后,本地分支就出现了 test1。
2)用上面 1) 中方法,
得到的分支名永远
和远程的
分支名一样,如果想
新建一个本地分支不同名字,同时跟踪一个远程分支可以利用:
git checkout -b
new_branch_name branch_name
这条指令本来是根据一个
branch_name 分支分出一个本地分支
new_branch_name,但是
如果所根据的分支
branch_name 是一个
远程分支名,那么本地的分支会
自动的
track 远程分支。建议
跟踪分支和
被跟踪远程分支
同名
总结:一般我们就利用
git push --set-upstream origin branch_name 来
在远程创建一个
与本地branch_name 分支同名的分支并
跟踪;利用
git checkout --track orgin/branch_name 来在本地创建一个与
branch_name 同名分支
跟踪远程分支。
1)如果 远程新建了一个分支, 本地没有该分支,可以利用 git checkout --track origin/branch_name ,这时本地会 新建一个 分支名叫 branch_name ,会 自动跟踪 远程的同名分支 branch_name。
-
顶
- 2
-
踩