备忘,记录一些常用的 git 命令,现在只会用一些最简单的,以后慢慢完善

配置

安装完 git 之后首先第一步通常是配置你的个人信息,包括 name 和 email ,配置完毕后,任何修改or提交等操作 git 才会知道是谁干的

# 配置用户信息
git config --global user.name "[name]"
git config --global user.email "[email address]"

# example
git config --global user.name "chuiliu"
git config --global user.email "xxx@foxmail.com"

配置完毕后可以使用下面的命令查看所有的git配置,能看到刚刚配置的用户信息

git config -l
git config --list

初始化

怎样让某个目录变成一个git仓库呢,首先,我们需要在该目录下执行初始化命令

git init  # 初始化git仓库

经过初始化后,当前目录就是一个git仓库了,git会生成一个名为.git的隐藏文件夹来保存仓库的版本信息,

查看仓库的状态

这个命令可以看到,当前哪些文件被修改,哪些文件未暂存,哪些已经暂存,还可以看到有冲突的文件,很常用。

git status

查看提交日志

git log

暂存

暂存的命令是git add,这里add的意思是,把文件加入到 git 的暂存区,没有执行过 add的文件,git 是不认识的,执行 commit的时候也不会被提交,也就是说,文件的提交前提是必须先 add。

# 添加当前目录下所有文件(3种方式)
git add .
git add -A
git add --all

# 添加某个文件
git add [filename]
# 添加index.html到暂存区
git add index.html

# 删除和移动的文件也能提交到暂存区
git add --all

提交

提交的命令是git commit,特别注意的是,这里是提交到本地git仓库的版本区,而不是远程仓库,初学的时候容易混淆。git commit的时候必须加上提交说明信息,并且不能为空,-m选项表示message,即提交信息。如果直接执行git commit,忘记-m选项,git 会要求你填写提交信息。
每一次提交会产生一个版本信息,git将会完全记录,并且可以回退到指定版本等。

# 提交到仓库
git commit -m "descriptions"
git commit [filename] -m "descriptions"

# example
# 将当前暂存区的所有文件提交到版本区
git commit -m "update"
# 将暂存区中的index.html文件提交到版本区
git commit index.html -m "更新 index.html"

分支

通常我们会把代码放到多个分支上,通常会有一个分支来专门放稳定版本的代码,开发则在另外的分支上开发。
多人开发时,开发也可能是在多个分支上开发,比如开发中A在分支A上开发功能A,开发者B在分支B上开发功能B,他们之间的开发互不干扰,等他们都开发好功能之后,再各自将分支合并到开发分支C上

# 查看当前所有分支,当前所在的分支前面会有个*符号
git branch

# 新建分支
git branch [branchName]

# 新建并切换到分支
git checkout -b [branchName]

# 切换到分支
git checkout [branchName]

# 提交到[branchName]分支
git push origin [branchName]

# 合并[branchName]到主分支
git merge [branchName]

# 删除分支
git branch -d [branchName]

远程仓库

上面的命令都只是操作的本地的git仓库,而远程仓库是另外一回事,团队在协同开发则需要把代码放在远程仓库,我们在本地提交后,需要把远程仓库的代码同步下来,再推送本地的更新到远程仓库。

git remote add

如果是刚刚创建在本地的git仓库,想要连接到远程仓库,则只要在远程(github,coding 等)创建一个仓库,复制下仓库的url,然后在本地仓库根目录下执行下面命令,可以用ssh协议(需要配置)和http协议。
这里的origin是git默认为远程仓库起的名字,可以修改成别的,如果有多个远程仓库,就要命多个不同的名字。

git remote add origin git@github.com:chuiliu/test.git

git pull

将远程仓库的最新代码更新到本地

git pull
git pull git@github.com:chuiliu/test.git [branchName]

git push

将本地代码推送到远程仓库,

git push -u origin master
git push origin master
# 默认会推送到master分支
git push

git clone

将远程仓库克隆到本地,非常常用的命令,比如我们想把github上的某个项目代码下载到本地,通常就是采用这种方式。
因此你也可以在github上直接创建一个空仓库,然后git clone到本地,克隆下来的就已经连接好远程仓库了,不需要再执行git remote add命令来建立连接。

git clone git@github.com:chuiliu/test.git

回滚

回滚到上一次commit的状态

git reset --hard

.gtiignore

通常git仓库下有些文件是不需要被提交的,比如常见的node_module.idea之类的库文件或ide的文件,我们可以创建一个名为.gitignore的文件来配置哪些信息不需要被提交。

# 创建.gitignore文件
touch .gitignore

一个.gitignore文件可能是这样的,使用通配符来匹配不需要提交的文件或目录:

bin/
target/
.settings/
.idea/
.classpath/
.project/
*.epoch
*.log
*.iml

删除

删除文件

# 删除test.txt
git rm test.txt

从暂存区删除文件,不删除物理文件

git rm –cached test.txt

忽略已经跟踪着的文件,和.gitignore一样,但是执行了这一句后尽管这个目录不写入.gitignore文件,git也会忽略对它的跟踪

git update-index --assume-unchanged  node_modules/

用git一起写代码

当多人协同写代码的时候,一般的流程是,先将你的修改addcommit到本地的版本区,然后再从远程仓库pull同步最新的代码到本地,如果这时候有冲突,则必须先解决,然后addcommit,再push你的代码到远程仓库,如果没有冲突,则直接push就OK了。