Tổng hợp các command/lệnh của GIT

Tham khảo: http://guides.beanstalkapp.com/version-control/common-git-commands.html 

Làm việc với Git trên dòng lệnh có thể khó khăn. Để giải quyết vấn đề đó, chúng tôi đã tổng hợp một danh sách các lệnh Git phổ biến, ý nghĩa của mỗi lệnh và cách sử dụng chúng. Chúng tôi hy vọng rằng điều này làm cho Git dễ sử dụng hơn hàng ngày.

Git có nhiều ứng dụng khách tuyệt vời cho phép bạn sử dụng Git mà không cần dòng lệnh. Biết được những hành động nào mà khách hàng đang thực hiện trong nền có lợi để hiểu cách Git hoạt động. Nếu bạn đang bắt đầu với Git, hãy xem hướng dẫn tuyệt vời của chúng tôi về chủ đề này .

Làm việc với kho lưu trữ cục bộ

git init

Lệnh này biến một thư mục thành một kho lưu trữ Git trống. Đây là bước đầu tiên trong việc tạo một kho lưu trữ. Sau khi chạy git init, có thể thêm và cam kết các tệp / thư mục.

Sử dụng:

# change directory to codebase

$ cd /file/path/to/code

 

# make directory a git repository

$ git init

Trong thực tế:

# change directory to codebase

$ cd /Users/computer-name/Documents/website

 

# make directory a git repository

$ git init

Initialized empty Git repository in /Users/computer-name/Documents/website/.git/

git add

Thêm các tệp trong vùng sắp xếp cho Git. Trước khi một tệp có sẵn để cam kết vào một kho lưu trữ, tệp cần được thêm vào chỉ mục Git (khu vực dàn dựng). Có một số cách khác nhau để sử dụng git add, bằng cách thêm toàn bộ thư mục, các tệp cụ thể hoặc tất cả các tệp chưa được phân giai đoạn.

Sử dụng:

$ git add <file or directory name>

Trong thực tế:

# To add all files not staged:

$ git add .

 

# To stage a specific file:

$ git add index.html

 

# To stage an entire directory:

$ git add css

git commit

Ghi lại những thay đổi được thực hiện đối với tệp vào kho lưu trữ cục bộ. Để dễ dàng tham khảo, mỗi cam kết có một ID duy nhất.

Cách tốt nhất là bao gồm một thông báo với mỗi cam kết giải thích những thay đổi được thực hiện trong một cam kết. Thêm thông báo cam kết giúp tìm ra một thay đổi cụ thể hoặc hiểu các thay đổi.

Sử dụng:

# Adding a commit with message

$ git commit -m “Commit message in quotes”

Trong thực tế:

$ git commit -m “My first commit message”

[SecretTesting 0254c3d] My first commit message

1 file changed, 0 insertions(+), 0 deletions(-)

create mode 100644 homepage/index.html

git status

Lệnh này trả về trạng thái hiện tại của kho lưu trữ.

trạng thái git sẽ trả về nhánh làm việc hiện tại. Nếu một tệp nằm trong vùng dàn dựng, nhưng không được cam kết, nó sẽ hiển thị với trạng thái git . Hoặc, nếu không có thay đổi, nó sẽ không trả lại gì để cam kết, thư mục làm việc sạch sẽ.

Sử dụng:

$ git status

Trong thực tế:

# Message when files have not been staged (git add)

$ git status

On branch SecretTesting

Untracked files:

  (use “git add <file>…” to include in what will be committed)

 

   homepage/index.html

 

# Message when files have been not been committed (git commit)

$ git status

On branch SecretTesting

Your branch is up-to-date with ‘origin/SecretTesting’.

Changes to be committed:

  (use “git reset HEAD <file>…” to unstage)

 

        new file:   homepage/index.html

 

# Message when all files have been staged and committed 

$ git status

On branch SecretTesting

nothing to commit, working directory clean

git config

Với Git, có nhiều cấu hình và cài đặt có thể. git config là cách gán các cài đặt này. Hai cài đặt quan trọng là user.name và user.email. Các giá trị này đặt địa chỉ email và tên cam kết sẽ được lấy từ máy tính cục bộ. Với git config , cờ –global được sử dụng để ghi cài đặt vào tất cả các kho lưu trữ trên máy tính. Nếu không có – cài đặt cờ –global sẽ chỉ áp dụng cho kho lưu trữ hiện tại mà bạn đang ở.

Có nhiều biến khác có sẵn để chỉnh sửa trong git config . Từ chỉnh sửa kết quả đầu ra màu đến thay đổi hành vi của trạng thái git . Tìm hiểu về cài đặt cấu hình git trong tài liệu Git chính thức .

Sử dụng:

$ git config <setting> <command>

Trong thực tế:

# Running git config globally

$ git config –global user.email “my@emailaddress.com”

$ git config –global user.name “Brian Kerr”

 

# Running git config on the current repository settings

$ git config user.email “my@emailaddress.com”

$ git config user.name “Brian Kerr”

git branch

Để xác định nhánh nào của kho lưu trữ cục bộ, hãy thêm một nhánh mới hoặc xóa một nhánh.

Sử dụng:

# Create a new branch

$ git branch <branch_name>

 

# List all remote or local branches

$ git branch -a

 

# Delete a branch

$ git branch -d <branch_name>

Trong thực tế:

# Create a new branch

$ git branch new_feature

 

# List branches

$ git branch -a

* SecretTesting

  new_feature

  remotes/origin/stable

  remotes/origin/staging

  remotes/origin/master -> origin/SecretTesting

  

# Delete a branch

$ git branch -d new_feature

Deleted branch new_feature (was 0254c3d).

git checkout

Để bắt đầu làm việc trong một chi nhánh khác, hãy sử dụng git checkout để chuyển đổi các chi nhánh.

Sử dụng:

# Checkout an existing branch

$ git checkout <branch_name>

 

# Checkout and create a new branch with that name

$ git checkout -b <new_branch>

Trong thực tế:

# Switching to branch ‘new_feature’

$ git checkout new_feature

Switched to branch ‘new_feature’

 

# Creating and switching to branch ‘staging’

$ git checkout -b staging

Switched to a new branch ‘staging’

git merge

Tích hợp các nhánh với nhau. git merge kết hợp các thay đổi từ nhánh này sang nhánh khác. Ví dụ: hợp nhất các thay đổi được thực hiện trong một nhánh dàn vào nhánh ổn định.

Sử dụng:

# Merge changes into current branch

$ git merge <branch_name>

Trong thực tế:

# Merge changes into current branch

$ git merge new_feature

Updating 0254c3d..4c0f37c

Fast-forward

 homepage/index.html | 297 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 1 file changed, 297 insertions(+)

 create mode 100644 homepage/index.html

Làm việc với kho lưu trữ từ xa

git remote

Để kết nối một kho lưu trữ cục bộ với một kho lưu trữ từ xa. Một kho lưu trữ từ xa có thể được đặt tên để tránh phải nhớ URL của kho lưu trữ.

Sử dụng:

# Add remote repository

$ git remote <command> <remote_name> <remote_URL>

 

# List named remote repositories

$ git remote -v

Trong thực tế:

# Adding a remote repository with the name of beanstalk

$ git remote add origin git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git

 

# List named remote repositories

$ git remote -v

origin git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git (fetch)

origin git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git (push)

Lưu ý: Kho lưu trữ từ xa có thể có bất kỳ tên nào. Cách đặt tên kho lưu trữ từ xa là ‘origin’.

git clone

Để tạo bản sao làm việc cục bộ của kho lưu trữ từ xa hiện có, hãy sử dụng git clone để sao chép và tải kho lưu trữ xuống máy tính. Sao chép tương đương với git init khi làm việc với kho lưu trữ từ xa. Git sẽ tạo một thư mục cục bộ với tất cả các tệp và lịch sử kho lưu trữ.

Sử dụng:

$ git clone <remote_URL>

Trong thực tế:

$ git clone git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git

Cloning into ‘repository_name’…

remote: Counting objects: 5, done.

remote: Compressing objects: 100% (3/3), done.

remote: Total 5 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (5/5), 3.08 KiB | 0 bytes/s, done.

Checking connectivity… done.

git pull

Để tải phiên bản mới nhất của kho lưu trữ, hãy chạy git pull . Thao tác này kéo các thay đổi từ kho lưu trữ từ xa sang máy tính cục bộ.

Sử dụng:

$ git pull <branch_name> <remote_URL/remote_name>

Trong thực tế:

# Pull from named remote

$ git pull origin staging

From account_name.git.beanstalkapp.com:/account_name/repository_name

 * branch            staging    -> FETCH_HEAD

 * [new branch]      staging    -> origin/staging

Already up-to-date.

 

# Pull from URL (not frequently used)

$ git pull git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git staging

From account_name.git.beanstalkapp.com:/account_name/repository_name

 * branch            staging    -> FETCH_HEAD

 * [new branch]      staging    -> origin/staging

Already up-to-date.

git push

Gửi các cam kết cục bộ đến kho lưu trữ từ xa. git push yêu cầu hai tham số: kho lưu trữ từ xa và nhánh mà push dành cho.

Sử dụng:

$ git push <remote_URL/remote_name> <branch>

 

# Push all local branches to remote repository

$ git push —all

Trong thực tế:

# Push a specific branch to a remote with named remote

$ git push origin staging

Counting objects: 5, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (3/3), done.

Writing objects: 100% (5/5), 734 bytes | 0 bytes/s, done.

Total 5 (delta 2), reused 0 (delta 0)

To git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git

   ad189cb..0254c3d  SecretTesting -> SecretTesting

 

# Push all local branches to remote repository

$ git push –all

Counting objects: 4, done.

Delta compression using up to 4 threads.

Compressing objects: 100% (4/4), done.

Writing objects: 100% (4/4), 373 bytes | 0 bytes/s, done.

Total 4 (delta 2), reused 0 (delta 0)

remote: Resolving deltas: 100% (2/2), completed with 2 local objects.

To git@account_name.git.beanstalkapp.com:/acccount_name/repository_name.git

   0d56917..948ac97  master -> master

   ad189cb..0254c3d  SecretTesting -> SecretTesting

Lệnh Git nâng cao

git stash

Để lưu các thay đổi được thực hiện khi chúng không ở trạng thái cam kết chúng vào kho lưu trữ. Điều này sẽ lưu trữ công việc và cung cấp một thư mục làm việc sạch sẽ. Ví dụ: khi làm việc trên một tính năng mới chưa hoàn thành nhưng cần chú ý đến một lỗi khẩn cấp.

Sử dụng:

# Store current work with untracked files

$ git stash -u

 

# Bring stashed work back to the working directory

$ git stash pop

Trong thực tế:

# Store current work

$ git stash -u

Saved working directory and index state WIP on SecretTesting: 4c0f37c Adding new file to branch

HEAD is now at 4c0f37c Adding new file to branch

 

# Bring stashed work back to the working directory

$ git stash pop

On branch SecretTesting

Your branch and ‘origin/SecretTesting’ have diverged,

and have 1 and 1 different commit each, respectively.

  (use “git pull” to merge the remote branch into yours)

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:   index.html

 

no changes added to commit (use “git add” and/or “git commit -a”)

Dropped refs/stash@{0} (3561897724c1f448ae001edf3ef57415778755ec)

git log

Để hiển thị lịch sử cam kết theo thứ tự thời gian cho một kho lưu trữ. Điều này giúp cung cấp bối cảnh và lịch sử cho một kho lưu trữ. git log có sẵn ngay lập tức trên một kho lưu trữ được nhân bản gần đây để xem lịch sử.

Sử dụng:

# Show entire git log

$ git log

 

# Show git log with date pameters

$ git log –<after/before/since/until>=<date>

 

# Show git log based on commit author

$ git log –<author>=”Author Name”

 

Trong thực tế:

# Show entire git log

$ git log

commit 4c0f37c711623d20fc60b9cbcf393d515945952f

Author: Brian Kerr <my@emailaddress.com>

Date:   Tue Oct 25 17:46:11 2016 -0500

 

    Updating the wording of the homepage footer 

    

commit 0254c3da3add4ebe9d7e1f2e76f015a209e1ef67

Author: Ashley Harpp <my@emailaddress.com>

Date:   Wed Oct 19 16:27:27 2016 -0500

 

    My first commit message

 

# Show git log with date pameters

$ git log –before=”Oct 20″

commit 0254c3da3add4ebe9d7e1f2e76f015a209e1ef67

Author: Ashley Harpp <my@emailaddress.com>

Date:   Wed Oct 19 16:27:27 2016 -0500

 

    My first commit message

 

# Show git log based on commit author

$ git log –author=”Brian Kerr”

commit 4c0f37c711623d20fc60b9cbcf393d515945952f

Author: Brian Kerr <my@emailaddress.com>

Date:   Tue Oct 25 17:46:11 2016 -0500

 

    Updating the wording of the homepage footer

git rm

Loại bỏ các tệp hoặc thư mục khỏi chỉ mục làm việc (khu vực dàn dựng). Với git rm , có hai tùy chọn cần lưu ý: buộc và lưu vào bộ nhớ cache. Chạy lệnh với lực sẽ xóa tệp. Lệnh được lưu trong bộ nhớ cache sẽ xóa tệp khỏi chỉ mục làm việc. Khi xóa toàn bộ một thư mục, một lệnh đệ quy là cần thiết.

Sử dụng:

# To remove a file from the working index (cached):

$ git rm –cached <file name>

 

# To delete a file (force):

$ git rm -f <file name>

 

# To remove an entire directory from the working index (cached):

$ git rm -r –cached <directory name>

 

# To delete an entire directory (force):

$ git rm -r -f <file name>

Trong thực tế:

# To remove a file from the working index:

$ git rm –cached css/style.css

rm ‘css/style.css’

 

# To delete a file (force):

$ git rm -f css/style.css

rm ‘css/style.css’

 

# To remove an entire directory from the working index (cached):

$ git rm -r –cached css/

rm ‘css/style.css’

rm ‘css/style.min.css’

 

# To delete an entire directory (force):

$ git rm -r -f css/

rm ‘css/style.css’

rm ‘css/style.min.css’

 

Leave a Comment