git pull 用于从远程获取代码并合并本地的版本,其实就是 git fetch 和 git merge FETCH_HEAD 的简写
git stash 所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录
git stash list 查看当前stash中的内容
git stash pop 将当前stash中的内容弹出,并应用到当前分支对应的工作目录上。该命令将堆栈中最近保存的内容删除(栈是先进后出)
git branch -r 查看远程所有分支
git branch -a 查看本地和远程所有分支
git remote -v 列出存在的远程仓库
添加远程仓库到本机
git remote add pd git://githup.com/paulbooner/ticgit.git
origin git://github.com/schacont/ticgit.git
pd git://github.com/paulboone/ticgit.git 可以用字符串pd指代对应仓库地址;
可以抓取所有Paul有的,本地仓库没有的信息,可以运行
git fetch pd
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
显示远程信息
git remote show origin
git branch -vv
查看本地分支和远程分子的映射关系
建立分支的映射
将当前分支映射到远程的指定分子,注意切换到当前分支
git branch -u origin/远程分支
git cherry-pick <commitHash>
上面命令就会将指定的提交commitHash,应用于当前分支。这会在当前分支产生一个新的提交,当然它们的哈希值会不一样。
举例来说,代码仓库有master和feature两个分支。
a - b - c - d Master
\
e - f - g Feature
现在将提交f应用到master分支。
上面代码表示将feature分支的最近一次提交,转移到当前分支。
# 切换到 master 分支
$ git checkout master
# Cherry pick 操作
$ git cherry-pick f
上面的操作完成以后,代码库就变成了下面的样子。
a - b - c - d - f Master
\
e - f - g Feature
从上面可以看到,master分支的末尾增加了一个提交f。
git cherry-pick命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交。
本地master分支推送到origin主机的master分支
git push origin master
想等同于 git push origin master:master
手动创建分支方法
创建一个分支
执行 git branch (branchname) 即可
$ git branch testing
$ git branch
* master
testing
git checkout master 切换分支到master
也可以使用 git checkout -b (branchname) 命令来创建新分支
并立即切换到该分支下
删除分支
git branch -d (branchname)
git add 添加所有改动内容
git add -A . 点一次添加所有改变的文件
git add -A 添加所有内容
git add . 点表示添加新文件和编辑过的文件,但不包括删除的文件
git add -u 表示添加编辑或者删除的文件,不包括新添加的文件
冲突的解决办法
在git中,可以使用 git add 告诉git 文件冲突已经解决
冲突方法的总结
git checkout master
Switched to branch 'master'
现在这些改变已经记录到我的 "master" 分支了。接下来我们将 "change_site" 分支合并过来。
git merge change_site
当前的分支是master,将 change_site 分支合并过来
Auto-merging runoob.php
CONFLICT (content): Merge conflict in runoob.php
Automatic merge failed; fix conflicts and then commit the result.
$ cat runoob.php # 打开文件,看到冲突内容
<?php
<<<<<<< HEAD 当前的分支名
echo 1;
=======
echo 'runoob';
>>>>>>> change_site 合并过来的分支名
?>
我们将前一个分支合并到 master 分支,一个合并冲突就出现了,接下来我们需要手动去修改它。
vim runoob.php
$ cat runoob.php
<?php
echo 1;
echo 'runoob';
?>
$ git diff
diff --cc runoob.php
index ac60739,b63d7d7..0000000
--- a/runoob.php
+++ b/runoob.php
@@@ -1,3 -1,3 +1,4 @@@
<?php
+echo 1;
+ echo 'runoob';
?>
在 Git 中,我们可以用 git add 要告诉 Git 文件冲突已经解决
$ git status -s
UU runoob.php
$ git add runoob.php
$ git status -s
M runoob.php
$ git commit
[master 88afe0e] Merge branch 'change_site'
现在我们成功解决了合并中的冲突,并提交了结果。
git clean -n
查看将要被删除的文件,并不实际删除文件
删除当前工作目录下的未跟踪文件,但不删除文件夹运行
git clean -f
删除当前工作目录下的未跟踪文件及文件夹运行
git clean -df
执行 git reset HEAD 以取消之前 git add 添加
git命令用法还是有很多,需要不断总结