基础基础的基础
获取和创建项目
init
初始化一个git
项目
# 初始化当前目录为git仓库
git init
# 初始化指定目录为git仓库
git init [repo_dir]
clone
将存储库克隆到新目录
# 拉去远程git仓库到本地,并且可以指定拉取的目录
git clone git_address [dir]
基本操作
add
将文件添加到git
git add .
# example: git add *.java
git add [pattern]
status
显示当前git的仓库的状态
git status
’ ’ = unmodified
M = modified
A = added
D = deleted
R = renamed
C = copied
U = updated but unmerged
diff
显示git的更改
git diff
git diff develop
git diff develop master
git diff filename
commit
提交代码,暂存到存储库
git commit -m "commit message"
restore
恢复文件
git restore filename
reset
重设HEAD指针
- Undo add
在你add file之后,却需要拉取最新的代码,可以尝试
git reset
$ edit (1)
$ git add frotz.c filfre.c
$ mailx (2)
$ git reset (3)
$ git pull git://info.example.com/ nitfol (4)
- Undo a commit and redo
$ git commit ...
$ git reset --soft HEAD^ (1)
$ edit (2)
$ git commit -a -c ORIG_HEAD (3)
当您记得刚提交的内容不完整,或者拼写错误的提交消息,或者两者兼而有之时,通常会执行此操作
对工作树文件进行更正
reset将旧的头复制到
.git/ORIG_HEAD
; 通过从其日志消息开始重做提交。 如果不需要进一步编辑消息,则可以给-C选项。HEAD^2 表示指针往前移动两步
Undo a merge or pull
git pull
git reset --hard
rm
从工作树和索引中删除文件
git rm
不会仅从您的工作目录中删除文件
git rm pattern
分支与合并
branch
查看,删除,创建分支
# 创建分支
git branch feature/id111
# 删除远程分支
git branch -d -r origin/devlop
# 删除未合并的分支
git branch -D test
# 查看所有分支
git branch -a
checkout
切换分支,或者还原文件
# 创建分支,并切换
git checkout -b feature/id111
## 还原hello.c文件
git checkout -- hello.c
# 切换分支
git checkout mytopic
# 当 当前分支有文件和要切换到的分支更改不同时,将不允许切换分支。可以使用-m参数,但是有可能会冲突
git checkout -m mytopic
switch
切换分支
git switch master
# 同checkout-m参数
git switch -m mytopic
merge
分支合并
# 将分支feature/id111合并到当前分支
git merge feature/id111
log
展示提交日志
git log
git log --oneline --graph
配置文件.git/config
[i18n]
commitEncoding = UTF-8
logOutputEncoding = UTF-8
tag
打标签
git tag tag_name
# 补标签
git tag -a tag_name commit_id
共享和提交项目
fetch
从另一个存储库下载对象和引用
pull
将更改从远程存储库合并到当前分支。 在默认模式下,git pull
是git fetch
的简写,其次是git merge FETCH_HEAD
。
$ git pull
$ git pull origin
push
推送代码。使用本地引用更新远程引用,同时发送完成给定引用所需的对象。
git push
git push origin
# 删除远程分支
git push origin --delete serverfix
remote
管理一组跟踪的存储库
- 创建一个新的git库。并合并到远程仓库
$ mkdir project.git
$ cd project.git
$ git init
$ git remote add -f -t master -m master origin git://example.com/git.git/
$ git merge origin
$ git push -u origin master
其中-t
是分支。一般直接git remote add origin 地址
即可
rebase
详见rebase使用
参考: