Git Cheatsheet

Git 命令速查

常用命令

Command Comments
git merge --abort 取消 merge
git merge merge 之后会生成一段 log
然后要 git commit 然后 push 一下才会有变化
git commit -m “{msg}”
git commit -m “{msg}” --no-verify 跳过 pre-commit 请求
git commit --amend -m “{msg}” 修改最后一次 commit 的 msg
git commit --amend -m “{msg}” --no-verify 如果 commit 使用了 --no-verify 那么修改 commit 也要使用
git stash stash 修改
git stash list
git stash whow [stash@{X}] 查看特定 stash 细节
git stash drop [-q –quiet] [stash@{X}] 删掉特定 stash
git stash pop
git stash apply [stash@{X}] Apply 其中一个 stash
git checkout {branch name} 切换本地分支 (如果没有的话就新建分支)
git checkout -b {branch name}
git pull origin {remote branch name} fetch 并且 merge 远程分支
git fetch origin {remote branch name} 仅仅 fetch 远程分支
git push --force 一般如果 revert 了的话重新 push 就可能遇到 reject 那么就使用 --force
git push :branch 这样是删除远程名为 branch 的分支
git branch {bch name} 直接创建本地分支
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git reset {commit} Reset 到某个 commit, 文件不变动
如果某一步 commit 错误就用这个
不要用 --hard
git reset {commit} --hard Reset 到某个 commit, 文件也变成对应的 version
git reflog
git update-index --assume-unchanged /path/to/file 忽略跟踪某个特定文件, 特别是 windows 下面 package. json 的临时修改每次都要 stash
git update-index --no-assume-unchanged /path/to/file 重新开始跟踪某个特定文件
git cherry-pick {commit id} cherry pick 某个特定 commit, 这个就是将 commit 的修改直接叠在当前分支上, 不进行任何 rebase
git cherry-pick {commit id1} {commit id2} cherry pick 多个特定 commit, 使用空格分割, 另外其实多个 commit id 的前后顺序不重要因为对应的 commit id 会按照时间叠加
git cherry-pick –continue cherry pick 的时候如果遇到 conflict, 那么会中断然后需要 merge, merge 之后 commit 之后就可以 continue, 如果要退出 cherry-pick, 那么就是用 –abort
git mv “原文件名” “新文件名” 修改文件名, 这样就不会出现删除文件的 commit 了
git diff CLI 显示对应的 diff
git diff {commit1} {commit2} CLI 显示两个 commit 之间的 diff
git diff > 123.diff 将对应的未 commit 的内容 diff 输出到 123.diff
git apply 123.diff 将 123.diff 的内容提交回当前分支, 如果其中一个文件失败则回退
git stash save -p “my commit message” 将部分文件 stash, 需要一个一个决定是否 stash

Reference

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
git commit -am "init" 提交并且加注释
git remote add origin git@192.168.1.119:ndshow
git push origin master 将文件给推到服务器上
git remote show origin 显示远程库 origin 里的资源
git push origin master:develop
git push origin master:hb-dev 将本地库与服务器上的库进行关联
git checkout \-\-track origin/dev 切换到远程 dev 分支
git branch -D master develop 删除本地库 develop
git checkout -b dev 建立一个新的本地分支 dev
git merge origin/dev 将分支 dev 与当前分支进行合并
git checkout dev 切换到本地 dev 分支
git remote show 查看远程库
git add .
git rm 文件名 (包括路径) 从 git 中删除指定文件
git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来
git config \-\-list 看所有用户
git ls-files 看已经被提交的
git rm [file name] 删除一个文件
git commit -a 提交当前 repos 的所有的改变
git add [file name] 添加一个文件到 git index
git commit -v 当你用-v 参数的时候可以看 commit 的差异
git commit -m "This is the message describing the commit" 添加 commit 信息
git commit -a -a 是代表 add,把所有的 change 加到 git index 里然后再 commit
git commit -a -v 一般提交命令
git log 看你 commit 的日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件 (从暂存区和工作区中删除)
git rm \-\-cached a.a 移除文件 (只从暂存区中删除)
git commit -m "remove" 移除文件 (从 Git 中删除)
git rm -f a.a 强行移除修改后文件 (从暂存区和工作区中删除)
git diff \-\-cached 或 $ git diff \-\-staged 查看尚未提交的更新
git stash push 将文件给 push 到一个临时空间中
git stash pop 将文件从临时空间 pop 下来
-------------------
git remote add origin git@github.com:username/Hello-World.git
git push origin master 将本地项目给提交到服务器中
---------------------
git pull 本地与服务器端同步
---------------------------
git push (远程仓库名) (分支名) 将本地分支推送到服务器上去。
git push origin serverfix:awesomebranch
----------------------------
git fetch 相当于是从远程获取最新版本到本地,不会自动 merge
git commit -a -m "log_message" (-a 是提交所有改动,-m 是加入 log 信息) 本地修改同步至服务器端
git branch branch_0.1 master 从主分支 master 创建 branch_0.1 分支
git branch -m branch_0.1 branch_1.0 将 branch_0.1 重命名为 branch_1.0
git checkout branch_1.0/master 切换到 branch_1.0/master 分支

git branch -r -d branch_remote_name 删除远程 branch
---------------------

mkdir WebApp
cd WebApp
git init 本地初始化
touch README
git add README 添加文件
git commit -m 'first commit'
git remote add origin git@github.com:daixu/WebApp.git

记住密码

主要是要打开这个文件: /.git/config (这个文件默认隐藏)

在这个文件末端加上这么几行:

1
2
[credential]
helper = store

以后输入密码之后就会记住了

Git 部分 Stash

首先执行 git stash save -p "my commit message":

然后输入关键字逐个决定是否 stash:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
y - stash this hunk
n - do not stash this hunk
q - quit; do not stash this hunk or any of the remaining ones
a - stash this hunk and all later hunks in the file
d - do not stash this hunk or any of the later hunks in the file
g - select a hunk to go to
/ - search for a hunk matching the given regex
j - leave this hunk undecided, see next undecided hunk
J - leave this hunk undecided, see next hunk
k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
? - print help

Troubleshooting

Unable to create ‘E:/xxx/.git/index.lock’: File exists.

解决方案:在. git 同级目录,执行 rm -f .git/index.lock 将文件删除即可提交成功