开始使用Git前的重要配置
$ git config --global user.name "Rong Huang"
$ git config --global user.email "xxx@xxx.com"
用pwd命令查看当前目录
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~
$ pwd
/c/Users/Huang Rong
用下面命令查看当前配置的信息
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~
$ cat .gitconfig
[user]
email = ms.rong.huang@outlook.com
name = Rong Huang
[core]
autocrlf = false
(补充一下autocrlf = false是为了解决提示错误,详见我的上一篇博客)
创建本地仓库
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~
$ git init testgit
Initialized empty Git repository in C:/Users/Huang Rong/testgit/.git/
由于.开头的文件通常会被系统隐藏文件夹,所以.git文件夹我们通过ls -la命令来查看,如下
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ ls -la
total 20
drwxr-xr-x 1 Huang Rong 197609 0 11月 10 13:17 ./
drwxr-xr-x 1 Huang Rong 197609 0 11月 10 13:17 ../
drwxr-xr-x 1 Huang Rong 197609 0 11月 10 13:17 .git/
新建文件命令
$ touch test.txt
查看git状态命令
$ git status
打开.git文件夹,查看内容(这个截图是add, commit, ignore操作之后的,可能大家操作这里的时候有些文件夹没有,也没事,接着往后学就行了)
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ cd .git
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit/.git (GIT_DIR!)
$ ls
COMMIT_EDITMSG description hooks/ info/ objects/ refs/
config HEAD index logs/ ORIG_HEAD
对代码仓库进行修改
两个步骤:
- add添加
- commit提交
新建test.txt文件,然后查看git状态,有一个变更没有添加,add *可以添加全部变更
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ touch test.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
test.txt
nothing added to commit but untracked files present (use "git add" to track)
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git add test.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
有Changes就可以commit了,commit命令 -m添加提交信息
(如果-m忘记了也没事,会进入一个vim编辑页面,编辑你的提交信息。按i进入插入状态,esc退出编辑状态,:wq保存退出)
$ git commit -m "first commit"
添加内容到一个文件
$ echo "xxxx" >> test.txt
查看文件内容,通过git log命令
$ cat test.txt
查看Git日志
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git log
commit b0173654a60156035745304c55518c6be28b0777 (HEAD -> master)
Author: Rong Huang <ms.rong.huang@outlook.com>
Date: Sat Nov 10 13:40:36 2018 +0100
second commit
commit 5619b8d2e7a6bc0636dcf2bfd44514258bb0a4d9
Author: Rong Huang <ms.rong.huang@outlook.com>
Date: Sat Nov 10 13:18:51 2018 +0100
first commit
忽略文件操作
为什么要忽略一些文件,比方说你编译了c,c代码文件外还有好几个编译后产生的文件,你并不需要。我们通过忽略文件操作,避免这些文件被提交。
添加.gitignore文件,输入比方说过滤所有.out文件(在vim编辑模式下输入*.out保存退出)
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ vim .gitignore
测试一下
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ touch a.out
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ touch b.out
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ ls
a.out b.out test.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
可以过滤掉.out文件了
还有使用git rm移除add里面文件
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ touch falsh.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git add falsh.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: falsh.txt
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git rm --cached falsh.txt
rm 'falsh.txt'
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
falsh.txt
no changes added to commit (use "git add" and/or "git commit -a")
.gitignore文件有很多模板,大家可以自行查找,添加到本地根目录就可以了。
撤销命令
如果不小心已经提交了某个文件,可以使用git reset HEAD~命令
$ git reset --hard HEAD~
$ git reset --soft HEAD~
$ git reset HEAD~
- hard删完了就没了
- soft撤销完了在添加状态里面还可以编辑了重新commit
- 都不写撤销完了回到还没有add的状态
ORIG_HEAD命令可以使用之前commit提交信息
Huang Rong@DESKTOP-O2VRRQO MINGW64 ~/testgit (master)
$ git commit -c ORIG_HEAD
[master b2fe87d] demo2
Date: Sat Nov 10 16:47:08 2018 +0100
1 file changed, 1 insertion(+)
轻微修改,add后使用–amend,可以不增加commit次数,(进入vim直接保存退出)
$ git commit --amend
欢迎留言交流~