git的使用(一)

git   —version  展示git的版本
tanya ~$ git --version
git version 2.22.0

  

最小配置

 
git  config  —global  user.name ‘your_name’
git  config  —global user.email ‘your_emai@163.com’

 

 
 
config 的三个作用域,设置缺省等于local
git config —local                    local只对仓库有效
 git config --global                 global对登录用户所有仓库游侠
git config --system                system对系统的所有用户有效
 
 
显示config的配置,加 —list
git config --list —local 
git config --list —global 
git config --list --system

  

 

清除

 
git config --unset --local user.name 
git config --unset --global user.name 
git config --unset --system user.name
 
 

优先级

 
local > global > system
 
 

建git仓库

 
两种⽅式: 
1. ⽤ Git 之前已经有项⽬代码 
    cd 项⽬代码所在的⽂件夹 
    git init
 
2. ⽤ Git 之前还没有项⽬代码 
    cd 某个⽂件夹 
    git init your_project #会在当前路径下创建和项⽬名称同名的⽂件夹 
    cd your_project
 
 
 

GIT基础

 

git  add 

实现对指定文件的追踪,添加到暂缓区
 
 

git status   

查看 哪些文件处于什么状态 
 
$ git status
On branch master
nothing to commit, working directory clean

  

这说明你现在的工作目录相当干净,所有已跟踪文件在上次提交后都未被更改过。还表明上面当前目录下没有出现任何处于未追踪状态的新文件
 
$ git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
 
 
    README
 
 
nothing added to commit but untracked files present (use "git add" to track)

  

在状态报告中可以看到新建的 README 文件出现在 Untracked files 下面。 未跟踪的文件意味着 Git 在之前的快照(提交)中没有这些文件;
 
$ git status -s
M README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

 

git status -s 或者git status --short将得到一种更为紧凑格式输出
 
 

git  diff

 
查看具体尚未暂存的文件更新了哪些地方
git diff
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 8ebb991..643e24f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -65,7 +65,8 @@ branch directly, things can get messy.
Please include a nice description of your changes when you submit your PR;
if we have to read the whole diff to figure out why you're contributing
in the first place, you're less likely to get feedback and have your change
-merged in.
+merged in. Also, split your changes into comprehensive chunks if your patch is
+longer than a dozen lines.
 
 
If you are starting to work on a particular area, feel free to submit a PR
that highlights your work in progress (and note in the PR title that it's

  

git diff 本身只显示尚未暂存的改动,而不是自上次提交以来所做的所有改动。 所以有时候你一下子暂存了所有更新过的文件后,运行 git diff 后却什么也没有,就是这个原因。
 
$ git diff --staged
diff --git a/README b/README
new file mode 100644
index 0000000..03902a1
--- /dev/null
+++ b/README
@@ -0,0 +1 @@
+My Project
git diff --cached 或者git diff —staged查看已暂存的将要添加到下次提交里的内容,就是已经add过的
git commit 提交更新 -m后面
$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
2 files changed, 2 insertions(+)
create mode 100644 README
 

git  commit  

提交到版本历史
在git commit之前,请一定要确认还有什么修改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。 这些修改过的文件只保留在本地磁盘。 所以,每次准备提交前,先用 git status 看下,是不是都已暂存起来了, 然后再运行提交命令 git commit,可以在 commit 命令后添加 -m 选项,将提交信息与命令放在同一行
$ git commit -m "Story 182: Fix benchmarks for speed"
[master 463dc4f] Story 182: Fix benchmarks for speed
2 files changed, 2 insertions(+)
create mode 100644 README
 
跳过使用暂存区域
只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤:
$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
 
    modified:   CONTRIBUTING.md
 
 
no changes added to commit (use "git add" and/or "git commit -a")
$ git commit -a -m 'added new benchmarks'
[master 83e38c7] added new benchmarks
1 file changed, 5 insertions(+), 0 deletions(-)
 

git rm

移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 “Changes not staged for commit” 部分(也就是 未暂存清单)看到:
$ rm PROJECTS.md
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
 
        deleted:    PROJECTS.md
 
 
no changes added to commit (use "git add" and/or "git commit -a")
然后再运行 git rm 记录此次移除文件的操作:
$ git rm PROJECTS.md
rm 'PROJECTS.md'
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
 
    deleted:    PROJECTS.md

  

下一次提交时,该文件就不再纳入版本管理了。 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。
 
另外一种情况是,我们想把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。 当你忘记添加 .gitignore文件,不小心把一个很大的日志文件或一堆 .a 这样的编译生成文件添加到暂存区时,这一做法尤其有用。 为达到这一目的,使用 --cached 选项:
 
$ git rm --cached README

git log 

查看提交历史
默认不用任何参数的话,git log 会按提交时间列出所有的更新,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。
git log 有许多选项可以帮助你搜寻你所要找的提交, 接下来我们介绍些最常用的。
一个常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交
 
 
撤销操作
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有 --amend 选项的提交命令尝试重新提交:
$ git commit --amend
这个命令会将暂存区中的文件提交。 如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所修改的只是提交信息。文本编辑器启动后,可以看到之前的提交信息。 编辑后保存会覆盖原来的提交信息。
例如,你提交后发现忘记了暂存某些需要的修改,可以像下面这样操作:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
最终你只会有一个提交 - 第二次提交将代替第一次提交的结果。
 
取消暂存的文件
你已经修改了两个文件并且想要将它们作为两次独立的修改提交,但是却意外地输入了 git add * 暂存了它们两个。 如何只取消暂存两个中的一个呢? git status 命令提示了你:
$ git add *
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
 
    renamed:    README.md -> README
    modified:   CONTRIBUTING.md
 
在 “Changes to be committed” 文字正下方,提示使用 git reset HEAD <file>... 来取消暂存。 所以,我们可以这样来取消暂存 CONTRIBUTING.md 文件:
$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M       CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
 
    renamed:    README.md -> README
 
 
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
 
 
    modified:   CONTRIBUTING.md
 
 

撤销对文件的修改

如果你并不想保留对 CONTRIBUTING.md 文件的修改怎么办?
$ git checkout -- CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
 
 
 
 
    renamed:    README.md -> README 
posted @ 2019-08-05 13:05  oldmanli  阅读(241)  评论(0编辑  收藏  举报