Git命令

初始化本地仓库

git init
git add *
git commit -m 'message'
git remote add origin https链接
git push origin master

add

.*git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入 。省略表示.,即当前目录。

git add -u []: 把中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。

git add -A: []表示把中所有tracked文件中被修改过或已删除文件和所有untracted的文件信息添加到索引库。

commit

git commit --amend # 可以继续使用上次的提交信息

remote

#查看关联的远程仓库的名称
git remote
#查看关联的远程仓库的详细信息
git remote -v

添加远程仓库的关联
远程仓库的名称一般默认为 origin ,你可以设置为其他的名称。

通过 git clone 下载项目到本地时,项目文件夹中的 .git 目录就是版本库目录。

.git 目录中的 config 文件中有远程仓库的关联配置。

# 远程仓库的 url,可采用 http 协议或 ssh(git) 协议
git remote add origin <url>

删除远程仓库的关联

git remote remove <name>

修改远程仓库的关联
关联远程仓库的协议http或ssh的修改。主要有三种方法:

第一种:使用 git remote set-url 命令,更新远程仓库的 url

git remote set-url origin <newurl>

第二种:先删除(remove)之前关联的远程仓库,再来添加(add)新的远程仓库关联

第三种:直接修改项目目录下的 .git 目录中的 config 配置文件。

reset

git reset --soft HEAD^** 不删除工作空间改动代码,撤销commit,不撤销add . 
--hard 删除工作空间改动代码,撤销commit,撤销add . 
--mixed (默认)不删除工作空间改动代码,撤销commit,并且撤销add . 
git reset head #撤销所有add 的文件
git reset filename #撤销add 的文件

push

git push <远程主机名> <本地分支名>:<远程分支名>

如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。

#慎用!删除远程仓库的分支
git push origin :master
# 等同于
git push origin --delete master

如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用git push。

-–force强制提交当前版本号,一般都不建议、也不会去使用。

pull

取回远程主机某个分支的更新,再与本地的指定分支合并。git pull = git fetch + git merge

git pull <远程主机名> <远程分支名>:<本地分支名>

git Fetch拉取远程代码到本地并且在拉取过程中如果发现与本地文件有冲突会提示出来。通过rebase可以解决冲突文件。但是如果直接pull的话会覆盖本地冲突文件,所以一般拉取代码都先commit->fetch->rebase。不建议直接pull,并且在push之前每次都要先fetch->rebase,防止将别人代码覆盖。

branch

git branch newbranch
git branch # 显示所有分支
git checkout newbranch
git merge newbranch # 在当前分支上合并newbranch
git branch -D newbranch # -d也可以删除
# -a显示本地分支和远程分支
# -r显示远程分支

merge/rebase

git merge:将两个分支,合并提交为一个新提交(生成一个新的合并点),并且新提交有2个parent。

git rebase:会取消分支中的每个提交,并把他们临时存放,然后把当前分支更新到最新的origin分支,最后再把所有提交应用到分支上。

merge/rebase都可以用来合并分支,并体现在代码树中

发生冲突时:merge发生冲突解决后->add->commit->push;rebase发生冲突解决后->add->git rebase -—continue或者--skip忽略冲突

merge合并的代码树如图所示:merge
rebase合并的代码树如图所示:

stash

git stash save 'message' # 暂存本地修改的代码

git stash list # 查看stash了哪些存储
git stash show stash@{X} # 显示stash@{X}做了哪些改动
git stash show stash@{X} -p # 显示stash@{X}存储的改动

git stash apply stash@{X} # 应用缓存堆栈中的对应stash@{X}存储,但不会从存储列表中删除
git stash pop stash@{X} # 恢复之前缓存的工作目录,将缓存堆栈中的对应stash@{X}删除

git stash drop stash@{X} # 丢弃stash@{X}存储,从列表中删除这个存储
git stash clear # 删除所有缓存的stash

log

git log 
git log -2   #→查看最近几条记录
git log -p -1  #→-p显示每次提交的内容差异,例如仅查看最近一次差异
git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息
git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息
git log --oneline --graph
git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录
git log --pretty=fomat:"%h %cn"  #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。
git show ^HEAD --stat # 查看某次提交中涉及到的文件
git reflog # 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

tag

git tag # 查看所有标签
git tag <tag name> ^head # 在某个commit上打tag
git push origin <tag name> # 推送一个标签到远程
git push origin --tags # 推送全部未推送的本地标签
git tag -d <tag name> # 本地删除标签
git push origin :refs/tags/<tag name> # 本地tag删除后删除远程tag

other

git diff # 可以对比当前文件与仓库已保存文件的区别

git checkout filename #撤销修改的文件(已经被git跟踪,修改后还没有add)

git ls-files 命令是用来查看暂存区中文件信息。
git rm filename # 删除暂存区或分支上的文件, 本地也会删除;
git rm file = rm file+ git add file
git rm --cached filename # 删除暂存区或分支上的文件, 但本地保留

git status 查看当前仓库中文件的状态,新添加、修改、删除

posted @ 2020-08-04 23:26  shakerChann  阅读(120)  评论(0编辑  收藏  举报