-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgit_study.txt
More file actions
90 lines (72 loc) · 4.2 KB
/
git_study.txt
File metadata and controls
90 lines (72 loc) · 4.2 KB
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
1. git安装
sudo apt-get install git
2. 创建用户
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
3. 创建仓库
cd /home
mkdir learngit
cd learngit //首先创建并切换到一个空目录,如/home/learngit
git init //初始化
4. 增加文件并提交,如readme.txt
vi readme.txt
git add readme.txt
git commit -m "..." //引号内输入改动内容,
5. 修改文件
首先修改readme.txt的内容
git status //查看状态, 请多用!!!
git diff readme.txt //查看文件内容的变动, 更放心
git add readme.txt
git status //查看状态, 可以看到待提交的文件
git commit
git status //提交后,再次查看仓库状态
6. 版本回退
git log //或git log --pretty=oneline
git reset --hard HEAD^ //回退到上一个版本,上上个版本改为HEAD^^,向前100个版本改为HEAD-100
git reset --hard 版本号 //回退版本后,若要穿越回未来,命令窗口没有关闭的情况下,上上滚找到版本号,执行此命令
//版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
cat readme.txt //查看穿越后的文件
若仅回退某一个文件,请看8
7. 版本回退后穿梭回未来
现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?
在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
终于舒了口气,第二行显示append GPL的commit id是3628164,现在,你又可以乘坐时光机回到未来了。
8.仅回退单个文件, 以readme.txt为例
git log readme.txt
git reset 版本号 readme.txt
git commit -m "..."
git checkout readme.txt //更新到工作目录
9. git add 的各种区别:
git add -A // 添加所有改动
git add * // 添加新建文件和修改,但是不包括删除
git add . // 添加新建文件和修改,但是不包括删除
git add -u // 添加修改和删除,但是不包括新建文件
10. 在 commit前撤销 add:
git reset <file> // 撤销提交单独文件
git reset // unstage all due changes
11. add前撤销对文件的修改:
git checkout -- readme.txt // 注意, add添加后(同commit提交后)就无法通过这种方式撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。
二. 远程仓库
1. 创建SSH KEY
ssh-keygen -t rsa -C "youremail@example.com"
ls -a 找到主目录下的.ssh目录
cd .ssh
vi id_rsa.pub
然后, 把id_rsa.pub中的内容复制到github中
2. 创建github仓库, 如learngit
3. git和github关联
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git或git remote add origin https://github.com/path/repo-name.git;使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。
关联的远程仓库为github时, server-name为github.com
4. 推送到远程仓库
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
5. 从远称仓库克隆
git clone git@server-name:path/repo-name.git 或 git remote add origin https://server-name/path/repo-name.git