git使用笔记

1.创建版本库

(1)$ mkdir learngit (生成learngit文件夹)
$ cd learngit (切到learngit)
$ pwd  (显示当前目录)

(2)$ git init (把这个目录变成可以托管的仓库)

2. 把文件放到版本库

几次add 一次comit add是放入暂存区  commit才是真正保存

$ git add reademe.txt

  $ git add licsence.txt

  $ git commit –m “”;

3. 删除文件

$ rm test.txt
误删后恢复文件
$ git checkout -- test.txt

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

4 历史修改记录

$ git log
$ git log --pretty=oneline(每条修改记录在一行显示)
$ git reset --hard HEAD^(返回上一版本)
$ git reset --hard HEAD^^(返回上上个版本)
$ git reset --hard 3628164(返回对应版本号,版本号不用写全,写前几位就行)
$ git reflog(关了窗口后再想查看修改记录输入的命令)
 

5远程仓库

(1)创建SSH Key 在gitbash中输入$ ssh-keygen -t rsa -C youremail@example.com(把邮件地址换成你自己的邮件地址)
然后一路回车,使用默认值即可。
C:UsersAdministrator 此目录下有.ssh 的文件夹了。
登录github右上角 setting -Account settings-SSH Keys-new ssh keys-title(随便填)-Key(粘贴id_rsa.pub文件的内容)-Add Key
 

6新建仓库并推送

(1)    右上角Create a new repo-Create a new repo填入名字其他保持默认设置,点击“Create repository”按钮
Gitbasah 输入以下命令$ git remote add origin git@github.com:michaelliao/learngit.git  把上面的michaelliao替换成你自己的GitHub账户名 
(2)$ git push -u origin master
(3)输入github用户名 密码回车就搞定了。此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
 

7先创建远程库,再克隆本地库。

(1)创建完远程库后 在gitbash输入 
$git clone https://github.com/ytudt/gitskills.git(url地址+库名)
 
(2)$ cd gitskills
$ ls
README.md  (查看仓库中的内容)
 

8创建分支

(1)$ git checkout -b dev  表示创建并切换,相当于以下两条命令
$ git branch dev
$ git checkout dev(切换到dev)
(2)$ git branch 查看所有分支 *表示在当前分支下
(3)修改完成文件后在 dev分支下提交
$ git add readme.txt 
$ git commit -m "branch test"
(4)$ git checkout master(切换回主分支)
(5)$ git merge dev(把dev分支合并到当前分支,dev分支还存在)
(6)$ git branch -d dev(删除dev分支)
注意:两个分支都有修改的情况下不能合并。合并是会有冲突。
 

9在dev分支工作时突然遇到master有不过需要修改

(1)$ git status(把当前工作现场“储藏”起来)
(2) $ git checkout master(切换到master)
(3) $ git checkout -b issue-101(建立新分支)
(4)修改bug
(5) $ git add readme.txt 
$ git commit -m "fix bug 101"(保存修改)
(6) $ git checkout master(切换到master)
(7) $ git merge --no-ff -m "merged bug fix 101" issue-101(合并分支)
(8) $ git checkout dev(切换到dev)
(10) $ git stash pop(恢复原来工作状态并删除stash)
或者git stash apply(先恢复)
git stash drop(后删除stash)
 

10 删除还没合并到master的分支

 如果新建了分支还没有合并到master不能通过$ git branch -d feature-vulcan删除 可以通过$ git branch -D feature-vulcan
删除。
 

11 往远程库推送分支

$ git push origin master(dev)
 

12创建标签

(1)$ git tag v1.0 默认标签是打在最新提交的commit上的
(2)给以前的打标签
$ git log --pretty=oneline --abbrev-commit
$ git tag v0.9 6224937 (给某个id的版本打标签)
(3)$ git tag(产看所有标签)
(4)$ git show v0.9产看标签的详细内容

13删除标签

如果没有添加到远程库中
(1)$ git tag -d v0.1 删除标签
 
 
(2)$ git push origin v1.0  推送某个标签到远程库
(3)$ git push origin –tags一次性推送全部尚未推送到远程的本地标签:
如果推动到远程库了
$ git tag -d v0.9 先从本地删除
$ git push origin :refs/tags/v0.9 然后从远程库删除

14 git hook

在执行git各种命令时会触发一些钩子函数,可以执行某些脚本

在项目根目录下cd .git/hooks 就可以看到各种钩子(只有把.sample后缀去掉才可以执行)

比如在git pull 代码合并后触发post-merge

hooks新建 post-merge 文件 输入如下修改完后需要在命令台中执行`chmod +x post-merge`

功能是检查 package.json 如果变更了则执行 npm install

#!/usr/bin/env bash
# MIT © Sindre Sorhus - sindresorhus.co

# git hook to run a command after `git pull` if a specified file was changed
# Run `chmod +x post-merge` to make it executable then put it into `.git/hooks/`.

changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"

check_run() {
  echo "$changed_files" | grep --quiet "$1" && eval "$2"
}

# Example usage
# In this example it's used to run `npm install` if package.json changed
check_run package.json "npm install"

  

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/ytu2010dt/p/5243691.html