git学习笔记

单机使用

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
#初始
git init // 初始化,每个新项目都要来一次
git add // 修改后的文件加入暂存区
git commit -m 'xxx' // 保存add后的修改
git checktout . // 注意有个点号,会把未add的内容都咔嚓掉,回退到刚add时的状态
git reset head // 回退到未add的状态,这个实际上是 git reset --mixed (add的修改内容回退未add状态,但所有修改内容都还在)

#分支
git checkout dev // 切换到dev分支
git checkout -b dev //新建并切换到dev分支
git stash // 暂时保存dev的现有状态,这样切到其他分支不会把现有的一些未add 已add的修改也切过去。
git stash pop //把保存的状态恢复(如果之前dev有add,恢复回来需要重新add)
git branch -d br1 //删除br1分支

#切版本
git reset --soft commit_id // 暂存区保留((所有修改内容都还在,add修改内容不会回退状态),切到某个版本
git reset --hard commit_id // 暂存区不保留(add的修改内容,未add的修改内容都不在了),切到某个版本
git reflog show branch // 如果reset了不该reset的版本,可以用这个命令查看commit提交记录,越新的越下面,然后使用类似reset HEAD@{1}方法切回去
git checkout commit_id // 会导致 'detached head' 游离头指针的情况出现,这个时候会离开分支,不在任何一个分支上,然后head指向commit_id。此时还是可以进行add和commit
git merge // 把游离头指针以及此时的commit给合并回来

#查看对比
git diff --cache //暂存区和最新快照对比
git diff --cache commit_id //暂存区和快照对比
git diff commit_id commit_id // 快照和快照对比
git diff commit_id // 工作区和快照对比
git diff //工作区和暂存区对比
git diff HEAD //工作区和最新快照对比

#修改
git commit --amend -m 'xxxx' //可以修改最后一次提交的内容

#删除
git rm file //删除但有记录
git rm -f file //强制删除但有记录

#重命名
git mv oldname newname

#合并
git merge br1 // 把br1的分支合并到当前分支(比如master)
// 如果出现冲突,修改冲突文件保存,然后重新add冲突文件,重新commit就ok了

#远程
git remote add xxx https://xxx/yyy/test.git //添加远程地址,取名xxx
git remote -v // 查看远程地址
git push -u xxx orgin master // 推送代码到远程服务器xxx上,-u可以添加分支名字,这里是本地的orgin分支传到远程的master分支

git clone https://xxx/yyy/test.git // 从某仓库搞代码,顺便把仓库地址设置为远程地址,默认名字orgin

git pull // 从远程仓库拉代码,别人push了新的,我这边就拉
// 可能会有冲突,有冲突改掉,add && commit就行。

抄袭别人的

1
2
3
4
5
6
7
8
9
10
11
12
13
git add PATH  // 增加跟踪文件
git reset PATH // 取消跟踪文件
git commit // 提交
git reset HEAD~1 // 撤销提交
git checkout -b BRANCH // 创建分支并切换到分支
git branch BRANCH // 创建分支但不切换到分支
git push -u REMOTE BRANCH // 推送分支并设置上游
git pull -t REMOTE BRANCH // 拉取分支并设置上游
git checkout --ours PATH && git add -- PATH // 使用本地文件解决merge冲突
git checkout --theirs PATH && git add -- PATH // 使用本地文件解决rebase冲突
git checkout BRANCH PATH // 使用
git show-ref
git ls-remote

商务洽谈