您的位置:首页 > 其它

git版本控制教程视频笔记

2015-09-07 21:37 323 查看
@author ninghao.net

git commit --help
git config --list
git config --unset --global user.name
git config --global color.ui true

cat ~/.gitconfig

git log --oneline
git log --oneline -n 10 --graph --decorate --all
git log --oneline --grep='index.html' # 搜索带关键词的log
git log --oneline --after='2015-09-12'
git log --oneline --before='1 week'

git diff
git diff --staged (老版本是 git diff --cached)
git diff master..awesome 对比master和awesome两个分支的不同

git mv before.txt after.txt 等价于git rm before.txt; git add after.txt
git mv old_path/test.txt new_path/test.txt

git rm file.txt # 删除
git checkout HEAD -- file.txt # -- 代表当前分支, 把该文件恢复到最近一次提交的状态,即撤销删除
git checkout HEAD^ -- file.txt # ^代表最近一次提交的上一次提交,^^代表上两次提交,以此类推,所以这就可以回退到任何提交点,哪怕是commit过的

# 把7e03d51这个commit的所有操作都作废/撤销/回退,如果和之后的commit冲突,会提示
git revert 7e03d51

# 指针重置
#不会影响暂存区。把commit指针回退到该commit,然后再commit,就会覆盖掉它之后的commit
git reset --soft 5c4e669
# 默认。指针回退,然后之后的commit,要重新add才行,因为它们都变成untracked了
git reset --mixed 5c4e669
# 直接把指针回退到这个commit,全帮你做好了,这之后的commit全都没了
git reset --hard 5c4e669

比如master什么都没改,然后创建了一个awesome分支,再合并进master,那么就是fast-forward形式的merge。如果master也有commit,那么再把awesome分支合并进来的时候,就会打开一个vim提示merge信息。

merge如果报冲突,那么打开相应的文件,会发现有冲突块。<<<<< HEAD === 块代表当前分支里的东西,==== >>>> master代表 master分支里的东西。

保存工作进度:(就是要checkout到其他分支,但是目前未commit的文件,不想commit又不想checkout它们)
git stash save '配置、index.php 等等'
这时候,那些编辑过的未commit的文件,就会恢复(好像checkout了)成未编辑过那样

查看保存的工作进度:
git stash list
stash@{0}: On master: test1

查看某个工作进度和当前代码的区别:(结果就像是diff)
git stash show -p stash@{0}

等弄完后,再回来恢复工作进度:
git stash apply stash@{0}

删除工作进度:
git stash drop stash@{0}

# 用git自带的别名设置方法设置checkout命令的alias为co
git config --global alias.co checkout
git co master


# 用系统自带的别名设置方法设置checkout命令的alias为co
vim ~/.bash_profile
添加:
alias gco='git checkout'
source ~/.bash_profile # 用source处理下这个文件就能用了
gco master




# 查看远程分支
git branch -r

# 查看所有分支
git branch -a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: